将“Class.class”传递给函数?

时间:2012-03-18 19:28:54

标签: java amazon-web-services

  

可能重复:
  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之类的签名。

我需要在?????中添加什么才能使此功能正常工作?

3 个答案:

答案 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函数必须进行类似编程才能接受泛型类型。