Oracle JDK和OpenJDK中的字符串实现

Ron*_*yen -2 java string generics

我找到了关于String的定义:

StringOracle Jdk extends ObjectOpen Jdk

当我创建一个泛型类型的示例代码时:

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

它在两个平台上编译运行没有任何错误.

?in Generic是从中延伸出来的任何类型Object

所以我的问题是:

  • 创建Open Jdk文档时有一些错误,或者我对Java中的Generic或String类型有误解?

也可以看看:

Sot*_*lis 6

Java语言规范

该类Object所有其他类的超类(第8.1.4节).

所以一个类声明为

public class SomeType 
Run Code Online (Sandbox Code Playgroud)

实际上相当于

public class SomeType extends Object 
Run Code Online (Sandbox Code Playgroud)

所以这个String类来自你的OpenJDK Java 7链接

public final class String implements java.io.Serializable, Comparable<String>, CharSequence
Run Code Online (Sandbox Code Playgroud)

实际上相当于

public final class String extends Object implements java.io.Serializable, Comparable<String>, CharSequence
Run Code Online (Sandbox Code Playgroud)

这样就可以满足Oracle链接中的Javadoc.