2014-03-28 75 views
-2

實現,我發現關於字符串的定義:字符串中的Oracle JDK和OpenJDK的

StringOracle Jdkextends ObjectOpen Jdk

當我創建一個示例代碼與泛型類型爲:

public void testMethod(Map<String,?> map) 
    Map<String,String> tmpMap = new HashMap<String, String>(); 
    tmpMap.put("Test", "Test"); 
    testMethod(tmpMap); 

它在兩個平臺上編譯和運行時沒有任何錯誤。

?在Generic是從Object

延伸的任何類型的所以我的問題是:

  • 有一些失誤產生的jdk打開文檔時或我誤解有關Java的泛型或字符串類型?

參見:

+3

等等,這有什麼問題?所有類的類型都隱式擴展Object。 –

+0

@SotiriosDelimanolis開放Jdk中的字符串不擴展對象類:-) –

+4

所有類類型都隱式擴展**對象**。 –

回答

6

Java Language Specification

Object是一個超類(§8.1.4)的所有其他類。

因此一個類被聲明爲

public class SomeType 

實際上相當於

public class SomeType extends Object 

所以String類從您的OpenJDK Java 7的鏈接

public final class String implements java.io.Serializable, Comparable<String>, CharSequence 

實際上相當於

public final class String extends Object implements java.io.Serializable, Comparable<String>, CharSequence 

這樣就滿足了Oracle鏈接中的Javadoc。

相關問題