0

我知道我可以通过传入一个类然后将该类声明为返回类型来动态确定方法的返回类型,如下例所示:

public static <returnType> returnClass dynamicConstructor (Class<returnType> returnClass){
    //Dynamically construct an object using a zero parameter constructor
    return (returnClass) object;
}

将被调用的代码是:

DynamicConstructor.construct(constructedClass);

这段代码很好,因为当你在代码中调用方法时,它很简单并且被封装了。但是,我想更进一步,将参数设为包含完整类名的字符串,然后让方法通过Class.forName(className). 这样做的问题是我无法弄清楚如何返回稍后确定的类型。使用方法重载,我的代码是:

public static ?????? dynamicConstructor (String className){
    try {
        return dynamicConstructor(Class.forName(className));
    } catch (ClassNotFoundException e) {
        System.out.println("Could not find class at path " + classPath);
        e.printStackTrace();
        return null;
    }
}

问题是我不知道在标记的部分中放什么??????。我希望能够以某种方式引用由Class.forName(className). 这可能吗?

4

1 回答 1

0

当然可以从类名创建类的实例(只要你有一个零参数的构造函数),但是如果类名的唯一存储位置是字符串,那么就无法确定类型返回。所以你的方法签名将是

public static Object dynamicConstructor(String)

这可能不是很有用或您想要的。

所以简短的回答是,不,这是不可能的

于 2013-03-10T20:41:45.143 回答