簡體   English   中英

集合的泛型類型子集合

[英]Generic typed subcollection of a collection

我想編寫一個幫助程序方法,該方法將返回對象集合的泛型子集合,但是我需要一些幫助!

這是我想要的方法:

    public static <T> Collection<T> getTypeFilteredSubCollection(Collection<Object> objects) {
    Collection<T> typeFilteredCollection = new ArrayList<T>();
    for(Object object : objects) {
        if(object instanceof T) {
            typeFilteredCollection.add((T)object);
        }
    }
    return typeFilteredCollection;
}

顯而易見的問題是,泛型類型將在運行時消失,但是您了解了我要執行的操作。

有誰知道如何實現這樣的想法?

您必須將T的類與它一起傳遞,並使用Class::isAssignableFrom

public static <T> Collection<T> getTypeFilteredSubCollection(Collection<Object> objects, Class<T> clazz) {
    Collection<T> typeFilteredCollection = new ArrayList<T>();
    for(Object object : objects) {
        if(clazz.isInstance(object)) {
            typeFilteredCollection.add((T)object);
        }
    }
    return typeFilteredCollection;
}

暫無
暫無

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

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