如何创建创建泛型类对象的方法?

时间:2016-06-02 15:33:56

标签: java class generics

我是java编程的新手,几天来我一直在努力编写一个方法来获取类型为T的参数并创建泛型类的新对象。 这是我到目前为止所得到的:

public class SomeClass {
    private BST gc;

    public <T> void MakeGenericClass(T type)
    {
        gc = new BST<type>();
    }
}

Eclipse编辑器说:类型无法解析为类型。 我很感激任何想法。 J.K。

1 个答案:

答案 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());
}