自己写的String类能够被加载吗?
自己写的String类能够被加载吗?
答:自己尝试了一下, 不能被加载, 如果你引用了自己写的String类, 则该住房那个执行的绿色三角就会消失, 是不能执行的。
在上面引入了interview.String、左边的三角形就消失了; 右边没有引入, 就有可执行三角。
为什么呢?这是类加载中的双亲委托机制。
就是说java虚拟机在加载一个类的时候, 应用程序类加载器会委托扩展类加载器加载, 扩展类加载器会委托根加载器加载, 这样做的目的是什么呢?当然是为了保证程序的安全, 它就是要保证你用的和系统类同名的类一定是系统自己提供的, 而不是你自己写的, 如果你要搞个其他类, 你干啥要和系统提供的类同名呢?
这样做的目的就是不想背锅, 你他娘的不要说用了某个外部的String类,然后程序出问题了, 怪jdk的开发人员。。
也就是说你写的类不能与jdk自带的类同名, 同名就不会被加载。
那如果是新开一个project, 创建一个java.lang的package, 然后新建一个String类, 这样行吗
emmm... 这样的话, 如果我们直接创建String类型, 则会直接引用我们写的String类型, 这里最多的一个问题就在于当我们写主方法的时候, 即public static void main(String[] args)时, 这里的String也是引用我们写的类, 所以说系统会检测出主方法不对, 编译报错
虽然我们确定我们写的就是这样, 但是由于引用的String位置错了, 所有还是不行的。