jvm 为什么可以创建String.java?

k4ymrczo  于 2022-11-07  发布在  Java
关注(0)|答案(2)|浏览(117)

只是想了解为什么我能够创建String.java文件,并且编译时没有任何错误。据我所知,类加载器链将转到Bootstrap类加载器,它已经加载了Sting.class。您能帮助我了解吗?

2fjabf4q

2fjabf4q1#

一个类不是仅通过它的名称来标识的,而是通过它的全限定名称来标识的,全限定名称是包的名称,后跟类名。
如果你在某个包com.myapp中创建了你自己的String类,那么它的全限定名将是com.myapp.String。它与标准的String类并不冲突,后者的全限定名是java.lang.String
当然,这样做会很混乱,特别是因为包java.lang中的类是默认导入的,因此,在实践中,你不应该编写自己的类String,或者将自己的任何类命名为与标准库中的类相同的类(尤其是包java.lang中的标准类)。

pu3pd22g

pu3pd22g2#

正如Jesper所强调的,类的唯一性是由它的完全限定名(即package)决定的。
尝试将这两个String类导入到另一个类中,当您尝试使用它时,您将观察到差异。

import java.lang.String;
import com.myclass.String;

现在,为了解决这种歧义,您需要通过类的完全限定名来引用该类。

相关问题