可能重复:
Passing a class (“Country.class”) as an argument in Java
我正在尝试为Amazon Web Service的DynamoDB编写通用保存功能。
目前我有:
public void save(????? classType, AmazonDynamoDBItem item)
{
try
{
DynamoDBMapper mapper = new DynamoDBMapper(_dynamoDB);
????? object = mapper.load(classType, item.getKey());
mapper.save(object);
}
...
}
我不太确定如何制作一个可以接受(例如)String.class
之类的签名。
我需要在?????
中添加什么才能使此功能正常工作?
答案 0 :(得分:3)
尝试这样的事情:
public static <E> void save(Class<E> classType)
{
try {
E object = classType.newInstance();
System.out.println(object.getClass());
}
catch (Exception e) {
}
}
答案 1 :(得分:1)
classType
参数必须是Class<?>
类型,即任何Class
个对象。
答案 2 :(得分:-1)
我正在尝试编写一个通用的保存功能
然后使用Generics
通用函数允许您将类型作为“参数”传入,但它不会出现在参数列表中。在你的情况下,你需要像:
// The "T" is the type you want to pass
public <T> void save(AmazonDynamoDBItem item)
{
try
{
DynamoDBMapper mapper = new DynamoDBMapper(_dynamoDB);
T object = mapper.load<T>(item.getKey());
mapper.save(object);
}
...
}
您的load
函数必须进行类似编程才能接受泛型类型。