在com.test包中 定义String类,重写toString()放回"my String!"
public static void main(java.lang.String[] args) {
String str=new String();
System.out.println(str.toString());
}
执行输出为 my String
根据java虚拟机类装载器的装载原理不应该会执行我自定义的String类
应该会先去启动类装载器中装载String类,如果装载到 就不会再装载我自定义的String
类了
public static void main(java.lang.String[] args) {
String str=new String();
System.out.println(str.toString());
}
执行输出为 my String
根据java虚拟机类装载器的装载原理不应该会执行我自定义的String类
应该会先去启动类装载器中装载String类,如果装载到 就不会再装载我自定义的String
类了
如果没有就去找classpath下的
String是final的,你自己的String咋个能继承API的String呢
com.test.String str=new com.test.String();
和java.lang.String不是一个类
特别谢谢 (疯狂的小猪) 当一个装载器被请求装载某个类时,它首先委托自己的parent去装载,若parent能装载,则返回这个类所对应的Class对象,若parent不能装载,则由parent的请求者去装载。
当前装载器的parent会去装载com.test.String类,结果没有找到.则由当前装载器去装载如果包名改为java.lang.String
当前装载器的parent会去装载java API 中的java.lang.String类,并返回这个类所对应的Class对象
所以自定义的java.lang.String就不会被装载