我有一个包含数字集(NS)属性的Item
。 getNumberSet(String attrName)
将返回Set<BigDecimal>
。
我的意图是采取该NumberSet并将其存储在另一个Item
但withNumberSet(String attrName, Set<Number> vals)
将不接受Set<BigDecimal>
作为输入,虽然BigDecimal
是Number
AmazonDynamoDB dynamoDbClient = AmazonDynamoDBClientBuilder.standard().build();
DynamoDB db = new DynamoDB(dynamoDbClient);
Table table = db.getTable("test-table");
GetItemSpec getItemSpec = new GetItemSpec().withPrimaryKey("id", "myid");
Item item = table.getItem(getItemSpec);
Set<BigDecimal> vals = item.getNumberSet("vals");
Item mynewItem = new Item()
.withPrimaryKey("id", "id2")
.withNumberSet("vals", vals); // won't compile
这给了incompatible types: java.util.HashSet<java.math.BigDecimal> cannot be converted to java.util.Set<java.lang.Number>
解决方法是从Set<Number>
创建一个新的Set<BigDecimal>
:
Set<Number> vals = new HashSet<Number>(item.getNumberSet("vals")); // conversion
Item mynewItem = new Item()
.withPrimaryKey("id", "id2")
.withNumberSet("vals", vals); // won't compile