繁体   English   中英

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

[英]How can I pass a Type to a generic Class in java?

大家在这里! 我想将类型传递给通用类型,例如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对象,则功能PassObjType()将使用HashSet创建一个Arraylist,如果我输入一个String对象,则它将创建一个具有String的Arraylist。 我怎样才能做到这一点?

您可以尝试类似

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);
}

但是我不确定这是否是您想要的,因为在运行时会删除通用类型,并且ArrayList<String>只是ArrayList (可以存储任何对象)。

您可以使用Java泛型来获取对象类型的参数,如下所示:

        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);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM