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的答案是正确的。