簡體   English   中英

創建通用列表,從而僅在運行時知道列表的類型

[英]Create generic list, whereby type of the list known only at runtime

我想生成一個通用列表,其中列表的類型僅在運行時才知道(它是創建該列表的對象的類型)。

完整說明:

我想在抽象類中實現此功能,所以我在運行時知道父類。

不知道該怎么做。

    Class myClass = getClass().getSuperclass();
    LinkedList<myClass> list = new LinkedList<myClass>();

不起作用。 有任何想法嗎?

或者你可以寫:

    List<Object> list = new LinkedList<Object>();

泛型在很大程度上是編譯時功能,因此在這種情況下沒有任何意義。

你可以寫

List list = new LinkedList();

如果可以使用的話,我通常更喜歡ArrayList。 ;)

只需使用Non-Generics ArrayList

ArrayList arrList = new ArrayList();

即使您可以使用<?>

使用List想法會很好,因為它顯示了"Program in Interface rather than implementation"的原理

另一個選擇是使用擴展類的類型來參數化抽象類。 這有點過度設計,但應該可以:

package test;

import java.util.ArrayList;
import java.util.List;

public class  AbstractListHolder<T> {

    private List<T> list = new ArrayList<T>();

    List<T> getList() {
        return list;
    }

}

class ListHolder extends AbstractListHolder<ListHolder> {

    void doSomething() {
        getList().add(this);        
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM