繁体   English   中英

如果我在java中创建自己的String类会发生什么?

[英]What will happen if i create my own String class in java?

当我创建自己的String类时。如果在同一个包中有另一个类,main( String [] args)似乎选择我的String类而不是rt.jar中的类。 我的问题是,为什么在这种情况下,Bootstrap类加载器不会选择rt.jar中的String类。 我的理解是一个类加载请求来到Application loader将被委托给bootstrap类加载器。

因为本地包中的String优先; 你可以显式地使用java.lang.String或命名你的class String其他1

public static void main(java.lang.String[] args)

为了扩展上述内容,在编译时编译器将类名解析为完全限定的形式(在字节码级别,没有任何import )。 此外,Java包含一个String intern池 ,它在加载类之前被初始化(为了使其起作用,必须在任何用户类之前加载java.lang.String )。

1 这真的是一个更好的主意,来自java.lang 阴影类要求维护噩梦。

为什么在这种情况下,引导类加载器不会选择rt.jar中的String类。 我的理解是一个类加载请求来到Application loader将被委托给bootstrap类加载器。

名称解析实际上发生在编译时。 编译器决定在使用它的源代码文件的上下文中String意味着什么,然后在类文件中使用已解析类的全名(例如java.lang.Stringyour.pkg.String )。 在运行时,Java类加载器始终使用完整的类名加载类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM