如何在此通用方法中避免SuppressWarnings(“未选中”)?

时间:2013-02-18 12:35:56

标签: java generics

如何在此方法中摆脱@SuppressWarnings(“未选中”)?

@SuppressWarnings("unchecked")
public <T> Worker<T> findSimilarWorker(Worker<T> worker) {
    // The variable workers is a Set<Worker<?>>
    for(Worker<?> w : workers) {
        // The following line is unchecked cast
        if(w.isSimilar(worker)) return (Worker<T>) w;
    }

    return null;
}

1 个答案:

答案 0 :(得分:5)

只要workers被定义为产生Worker类型的?,您只需要需要类型转换。编译器正确地向您发出警告,因为workers可能包含不同类型的Worker(尽管workers未显示,但我假设其类型不是{{1} }})。

(简短版:您不能,甚至不能使用T支票,但不允许使用仿制品)