【问题标题】:Java - method parameters, String followed by ListJava - 方法参数,String 后跟 List
【发布时间】:2017-01-09 11:30:38
【问题描述】:

我有一个接受StringString<List> 作为方法参数的Java 方法。如何区分字符串与不是列表的一部分?

方法:

void returnValues(String sensor, List<String> attributes)

呼叫:

nexaConnect.returnValues(Arrays.asList("19455746", "blobJson", "deviceMfg", "eventCode", "sensorClass", "sensorUUID", "timeStamp", "uID"));

我能看到的唯一可能的解决方法是删除第一个字符串并将值包含在列表中,然后获取列表的第一个值并以这种方式使用它。有没有办法将它们分开,使其不属于列表的一部分?

【问题讨论】:

  • 我并没有真正得到你想要的,但是returnValues("This is not Part of the List", yourList); 应该足够了吗?
  • 第一个参数在哪里?
  • 我有一个 JAVA 方法,它首先接受一个 String 和一个 List,你应该在调用这个方法时传递这些参数。然后,你应该展示你的逻辑来搜索它是否包含在列表中。

标签: java list arraylist parameter-passing method-parameters


【解决方案1】:

尝试调用returnValues 与形式参数不匹配。假设这就是你要问的,那就这样吧。

nexaConnect.returnValues("TheFirst", Arrays.asList("19455746", "blobJson", 
    "deviceMfg", "eventCode", "sensorClass", 
    "sensorUUID", "timeStamp", "uID"));

保存对局部变量的引用,看起来像,

String sensor = "TheFirst";
List<String> attributes = Arrays.asList("19455746", "blobJson", 
    "deviceMfg", "eventCode", "sensorClass", 
    "sensorUUID", "timeStamp", "uID");
nexaConnect.returnValues(sensor, attributes);

【讨论】:

  • 只是要注意,使用可变参数作为String... listItems 将是另一种选择,考虑到List 仅针对方法调用进行初始化,如果它不是一个简单的示例调用并且它没有t 需要修改潜在传递的List 引用。这样可以删除Array.asList 调用。
  • 如何区分字符串不是列表的一部分?我认为这是真正的问题。
【解决方案2】:

现在,你有一个方法签名

void methodName(String arg1, List<String> arg2)

您使用的签名类似于

void methodName(List<String> arg2)

调用方法时需要匹配签名,所以传递的字符串有第一个参数,然后是列表。

所以不要像这样称呼它

instance.methodName(anInstanceOfList);

先传一个String值

instance.methodName(aStringValue, anInstanceOfList);

【讨论】:

    猜你喜欢
    • 2013-08-15
    • 2023-03-06
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2018-08-29
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多