首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么将核心字符串对象分配给自定义字符串类引用

为什么将核心字符串对象分配给自定义字符串类引用
EN

Stack Overflow用户
提问于 2016-11-09 07:24:35
回答 1查看 52关注 0票数 2

案例1:我定义了一个包,java.lang,并在这个包中定义了一个类字符串:

代码语言:javascript
复制
package java.lang;
public class String {
    String name = "ABC";
}

在这里,我可以将自定义字符串类的引用(名称)分配给来自核心java库的String类的对象(“ABC”)。为什么编译器允许这样做?

案例2:当我在其他包中定义相同的字符串类时,比如java.langplus:

代码语言:javascript
复制
package java.langplus;
public class String {
    String name = "ABC"; //compiler error
}

然后,这一行String name = "ABC";会像预期的那样抛出编译器错误,因为我将自定义字符串类的引用从java.langplus类分配给核心字符串类的对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-09 08:00:28

在运行时,java中的每个类都是由其类加载器加上其包定义的。

在编译时,我们没有类加载器,因此编译器只使用包名进行类型检查,以进行引用分配。

在案例2中,对于核心字符串:"ABC“和字符串引用: name,包名与java.langplus包不同。

在第1种情况中,即使编译器在 java.lang中找到与"ABC“类(即核心库字符串类)相同的字符串类,但它在运行时将失败。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40501853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档