Java 通行证;类。类“;去参加一个活动?
可能重复:Java 通行证;类。类“;去参加一个活动?,java,amazon-web-services,Java,Amazon Web Services,可能重复: 我正在尝试为AmazonWeb服务的DynamoDB编写一个通用的保存函数 目前我有: public void save(????? classType, AmazonDynamoDBItem item) { try { DynamoDBMapper mapper = new DynamoDBMapper(_dynamoDB); ????? object = mapper.load(classType, item.getKey());
我正在尝试为AmazonWeb服务的DynamoDB编写一个通用的保存函数 目前我有:
public void save(????? classType, AmazonDynamoDBItem item)
{
try
{
DynamoDBMapper mapper = new DynamoDBMapper(_dynamoDB);
????? object = mapper.load(classType, item.getKey());
mapper.save(object);
}
...
}
我不太确定如何制作一个可以接受(例如)String.class
之类内容的签名
我需要在?????
中输入什么才能使此功能正常工作
我正在尝试编写一个通用的保存函数
然后使用
泛型函数允许您将类型作为“参数”传入,但它不会出现在参数列表中。在您的情况下,您需要以下内容:
// 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);
}
...
}
//T是要传递的类型
公共作废保存(AmazonDynamoDBItem)
{
尝试
{
DynamoDBMapper映射器=新DynamoDBMapper(_dynamoDB);
T object=mapper.load(item.getKey());
保存(对象);
}
...
}
您的
加载
功能必须进行类似的编程,以接受泛型类型。尝试以下操作:
public static <E> void save(Class<E> classType)
{
try {
E object = classType.newInstance();
System.out.println(object.getClass());
}
catch (Exception e) {
}
}
公共静态无效保存(类类型)
{
试一试{
E object=classType.newInstance();
System.out.println(object.getClass());
}
捕获(例外e){
}
}
类类型参数的类型必须是类
,即任何类
对象。那么,javadoc说String.getClass()
返回什么?类类型应该是它:public void save(Class classType,AmazonDynamoDBItem item){Class object=mapper.load(classType,item.getKey());}错误。泛型类型信息在运行时被擦除。在您的示例中,什么是classType
?您必须将该类传递给mapper.load
方法,因为您无法在运行时获取类型参数,所以需要一个class
对象。然后我误解了他的问题。我不熟悉AWS,我认为DynamoDBMapper是他创建的一个类,可以在编译时定义其行为。如果没有这些知识,我想他在编译后需要一个类型参数是很奇怪的。在函数中创建这种类型的类的语法是什么<代码>类类型变量=新类类型()代码>不起作用。如果你想自己创建一个新实例,那么@AKJ的答案是正确的。