我想返回一个传入的Class对象的类型的对象的实例.传入的类型可以是任意的.有没有办法用泛型?
澄清 – 我不希望方法的调用者不必转换到他们传入的对象的Class
例如,
public Object<Class> getObject(Class class) { // Construct an instance of an object of type Class return object; } // I want this: MyClass myObj = getObject(MyClass.class); // Not this (casting): MyClass myObj = (MyClass)getObject(MyClass.class);
解决方法
我假设你想创建一个新的类的实例.这不可能使用泛型(你不能调用新的T()),也将是相当有限的使用反射.
反思方法可以是:
//class is a reserved word,so use clazz public <T> T getObject(Class<T> clazz) { try { return clazz.newInstance(); } catch( /*a multitude of exceptions that can be thrown by clazz.newInstance()*/ ) { //handle exception } }
请注意,这仅在类具有无参数构造函数时有效.
但是,问题是为什么你需要,而不是调用新的WhatEverClassYouHave().