簡體   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