使用泛型类型实例化DynamoDBQueryExpression
问题描述:
编辑:我试图简化手头上的问题,但事实证明,它造成了更多的混淆。这里是真正的交易:使用泛型类型实例化DynamoDBQueryExpression
我正在使用适用于DynamoDB的AWS Java SDK。使用DynamoDBMapper类,我试图查询DynamoDB以从特定表中检索项目。我有几个映射到我的DynamoDB表的对象,并且我希望有一个可以接受映射对象,查询表并返回项结果的泛型方法。
Psudo代码:
@DynamoDBTable(tableName="testTable")
public class DBObject {
private String hashKey;
private String attribute1;
@DynamoDBHashKey(attributeName="hashKey")
public String getHashKey() { return this.hashKey; }
public void setHashKey(String hashKey)
@DynamoDBAttribute(attributeName="attribute1")
public String getAttribute1() { return this.attribute1; }
public void setAttribute1(String attribute1) { this.attribute1 = attribute1; }
}
public class DatabaseRetrieval {
public DatabaseRetrieval()
{
DBObject dbObject = new DBObject();
dbObject.setHashKey = "12345";
DBRetrievalAgent agent = new DBRetrievalAgent;
dbObject = agent.retrieveDBObject(dbObject.getClass(), dbObject);
}
}
public class DBRetrievalAgent {
public Object retrieveDBObject(Class<?> classType, Object dbObject)
{
DynamoDBQueryExpression<classType> temp = new DynamoDBQueryExpression<classType>().withHashKeyValues(dbObject);
return this.dynamoDBMapper.query(classType, temp);
}
}
答
您可以为getResult()
类型指定为T
,以使它通用(即接受任何类),如下所示:
public <T> String getResult(T t) {
String result = "";
List<T> newList = new ArrayList<>();
// perform actions
return result;
}
答
使用在您的方法中输入目击者:
public <T> String getResult(Class<T> type) {
List<T> newList = new ArrayList<>();
//other code
}
您打算如何处理该列表以及该类别。如果只给予一个Class,你将如何填充它?班级提供什么信息?你可以使用'new ArrayList
不要在评论中解释它。改为编辑你的问题。 –