2011-03-05 27 views
4

可能重複:
Question marks in Java generics.在Java SE6中使用<?>做什麼模板化?

我編輯別人的代碼的分配和我試圖把它清理乾淨它擺脫了幾十個警告,並Eclipse正在給出使用Collections作爲原始類型的警告。當我把它建議修復它創建了這個。

Collections<?> 

public static String separatedString(Collection<?> c, String separator) { 
    return separatedString(c, "", separator, "", new StringBuffer()) 
      .toString(); 
} 

我只是想知道究竟這是什麼做和它是否是安全的。

+0

它在這種情況下沒有太大的作用。 – 2011-03-05 13:28:03

回答

1

這是generics的概念。

及其所有關於面向對象的編程

例如,如果我一個變量聲明爲Collection<MyClass>,並僅對象是聲明的類型或MyClass的亞型可以放在它的。

這很好地保持了事情的正確性,並對應該使用此代碼的方式施加約束。

問號代表您選擇的課程。

當你初始化你可以...哎呦只是看到這裏有個確切的重複類: What does the question mark in Java generics' type parameter mean?

0

添加

MyClass<?> 

增加仿製藥的代碼,但並沒有真正增加因爲裸體問號可以表示任何階級,所以很有好處。谷歌和泛型的閱讀,你會學到如何創建泛型,限制哪些類可能會被使用,以及如何增加編譯時類型檢查的好處。

例如,

MyClass<? extends Comparable> 

這將限制編碼器只使用可比同類型MyClass的。一個基本的教程從這裏開始:Java Generics Tutorial

相關問題