2013-12-18 16 views
2

我有這樣的一段代碼,讓在標題中提到的警告時,列出 ,: 類型列表中表達選中需要轉換成符合使用Hibernate標準

List<Student> studentList = session.createCriteria(Student.class) 
    .add(Restrictions.eq("indexNumber", indexNum)) 
    .list(); 

我讀過線程How do I fix "The expression of type List needs unchecked conversion...'?並有通過@BrunoDeFraine一個很好的解決方案:

public static <T> List<T> castList(Class<? extends T> clazz, Collection<?> c) { 
    List<T> r = new ArrayList<T>(c.size()); 
    for(Object o: c) 
     r.add(clazz.cast(o)); 
    return r; 
} 

然後我可以只是這樣做:

List<SyndEntry> entries = castList(SyndEntry.class, sf.getEntries()); 

這很好,但在我的情況下,我有標準作爲參數,而不是類和集合。 我的問題是,該方法是否可以適應標準作爲參數,或者我應該簡單地使用@SuppressWarnings(「unchecked」)?

+2

你想投射一個Criteria對象?這是沒有意義的。 'criteria.list()'返回一個List,所以我不確定差距在哪裏。這種方法很奇怪,你不會獲得任何編譯時類型安全(如果出現問題,它仍然只會在運行時失敗),並且可能會減慢速度,尤其是在列表很長的情況下。我只是使用'@ SuppressWarnings'或者接受警告。 – Taylor

+0

@泰勒請讓這個評論一個答案,所以我可以接受它(如果你想,當然)。 –

回答

1

從評論中移除: 您想投射Criteria對象嗎?這是沒有意義的。 criteria.list()返回一個列表,所以你可以使用它。

castList方法很奇怪,你不會獲得任何編譯時類型安全性(它仍然只會在運行時失敗,如果出現問題),它可能會減慢速度,特別是如果列表很長。我只是使用@SuppressWarnings或者接受警告。

相關問題