我是java编程的新手,几天来我一直在努力编写一个方法来获取类型为T的参数并创建泛型类的新对象。 这是我到目前为止所得到的:
public class SomeClass {
private BST gc;
public <T> void MakeGenericClass(T type)
{
gc = new BST<type>();
}
}
Eclipse编辑器说:类型无法解析为类型。 我很感激任何想法。 J.K。
答案 0 :(得分:1)
您通常需要传递Class<T>
对象来制作对象。
<T> T makeOne(Class<T> itsClass) throws InstantiationException, IllegalAccessException {
return itsClass.newInstance();
}
public void test() throws InstantiationException, IllegalAccessException {
Test aTest = makeOne(this.getClass());
}
不幸的是Object.getClass()
会返回一个Class<?>
,这对下一步没有多大帮助。我们需要使用演员来解决这个问题。
<T> T makeOne(T template) throws InstantiationException, IllegalAccessException {
return makeOne((Class<T>) template.getClass());
}