如何在Java中将Type传递给泛型类?

时间:2014-02-28 13:16:24

标签: java generics reflection arraylist

大家都在这里!我希望将类型传递给泛型类型,如Arraylist,我该怎么做?我做了一个简单的例子,这样你就会知道我想要什么,当然这个代码是错误的。

public static void passObjType(Object obj) {

    Class clazz = obj.getClass();

    ArrayList<clazz> arr = new ArrayList<clazz>();

}

public static void main(String[] args) {

    HashSet<String> hs = new HashSet<String>();

    passObjType(hs);
}

我希望,如果我输入一个HashSet对象,那么funktion PassObjType()将创建一个带有HashSet的Arraylist,如果我输入一个String对象,那么它将创建一个带有String的Arraylist。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以尝试类似

的内容
public static <T> void passObjType(T obj) {
    ArrayList<T> arr = new ArrayList<T>();
    //...
}

public static void main(String[] args) {
    HashSet<String> hs = new HashSet<String>();
    passObjType(hs);
}

但我不确定这是否是你想要的,因为在运行时泛型类型erasedArrayList<String>只是ArrayList(可以存储任何对象)。

答案 1 :(得分:2)

您可以使用Java Generics获取Object类型的参数,如下所示:

        public static<T> void passObjType(T e) {
             ArrayList<T> arr = new ArrayList<T>();
        }

        public static void main(String[] args) {
            HashSet<String> hs = new HashSet<String>();
            String hp = new String();
            passObjType(hs);
            passObjType(hp);
        }