gpt4 book ai didi

java - 将省略号作为参数传递给 java 方法

转载 作者:行者123 更新时间:2023-12-01 12:02:26 24 4
gpt4 key购买 nike

我有一个 Java 方法,它接受省略号格式的参数。该方法依次调用一个 api,该 api 再次接受省略号格式的参数:

public void myMethod(String a, String... listOfParam){

//Method Signature of anotherAPI is anotherAPI(String input, Object ... listOfParams)

//I call anotherAPI method as described below.
String result = anotherAPI(a, listOfParam);
}

但是,当我将 listOfParams 作为参数传递时,我得到 UnsupportedOperationException

请让我知道这种情况下的正确方法。

编辑

我正在调用 AmazonDynamoDB Java API( http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html?index-all.html ) addHashOnlyPrimaryKeys 方法:

客户端方法如下:

public static List<Item> getAllItems(String tableName,String primaryKeyName, String ... listOfKeys){
List<Item> itemList = null;
System.out.println(listOfKeys.toString());
TableKeysAndAttributes tkaa = new TableKeysAndAttributes(tableName);
tkaa.addHashOnlyPrimaryKey(primaryKeyName, listOfKeys);
BatchGetItemOutcome outcome = dynamoDB.batchGetItem(tkaa);
itemList = outcome.getTableItems().get(tableName);
return itemList;
}

我测试此方法为:

List<Item> listOfItems = AmazonDynamoDBUtil.getAllItems("myTable","data","1","2","3","4");

这里的数据是字符串类型。

但是,我得到的异常(exception)是:

Exception in thread "main" java.lang.UnsupportedOperationException: value type: class [Ljava.lang.String;
at com.amazonaws.services.dynamodbv2.document.internal.InternalUtils.toAttributeValue(InternalUtils.java:221)
at com.amazonaws.services.dynamodbv2.document.internal.InternalUtils.toAttributeValueMap(InternalUtils.java:535)
at com.amazonaws.services.dynamodbv2.document.internal.InternalUtils.toAttributeValueMap(InternalUtils.java:547)
at com.amazonaws.services.dynamodbv2.document.internal.BatchGetItemImpl.doBatchGetItem(BatchGetItemImpl.java:84)
at com.amazonaws.services.dynamodbv2.document.internal.BatchGetItemImpl.batchGetItem(BatchGetItemImpl.java:58)
at com.amazonaws.services.dynamodbv2.document.DynamoDB.batchGetItem(DynamoDB.java:154)
at awsdynamodb.AmazonDynamoDBUtil.getAllItems(AmazonDynamoDBUtil.java:63)

请让我知道这种方法可能存在什么问题。

最佳答案

这正在工作:

public class Main {

public static void main(String[] args) {
myMethod("test 1");
myMethod("test 2", "a");
myMethod("test 3", "a", "b", "c");
}

public static void myMethod(String a, String... listOfParam) {
anotherAPI(a, listOfParam);
}

private static void anotherAPI(String a, String... listOfParam) {
StringBuilder sb = new StringBuilder();
for (String p : listOfParam) {
sb.append(p);
sb.append(", ");
}
System.out.println(a + ": " + sb.toString());
}
}

产生预期结果:

test 1: 
test 2: a,
test 3: a, b, c,

从 Java 的角度来看,listOfParam 作为 String... 是一个 String[] 数组。

关于java - 将省略号作为参数传递给 java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27899834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com