自己写一个java.lang.String
来源:互联网 发布:死亡空间游戏知乎 编辑:程序博客网 时间:2024/05/16 08:01
可以,但是即使你写了这个类,也没有用。
这个问题涉及到加载器的委托机制,在类加载器的结构图中,
BootStrap是顶层父类,ExtClassLoader是BootStrap类的子类,ExtClassLoader又是AppClassLoader的父类
这里以java.lang.String为例,当我是使用到这个类时,Java虚拟机会将java.lang.String类的字节码加载到内存中。
为什么只加载系统通过的java.lang.String类而不加载用户自定义的java.lang.String类呢?
因加载某个类时,优先使用父类加载器加载需要使用的类。如果我们自定义了java.lang.String这个类,
加载该自定义的String类,该自定义String类使用的加载器是AppClassLoader,根据优先使用父类加载器原理,
AppClassLoader加载器的父类为ExtClassLoader,所以这时加载String使用的类加载器是ExtClassLoader,
但是类加载器ExtClassLoader在jre/lib/ext目录下没有找到String.class类。然后使用ExtClassLoader父类的加载器BootStrap,
父类加载器BootStrap在JRE/lib目录的rt.jar找到了String.class,将其加载到内存中。这就是类加载器的委托机制。
所以,用户自定义的java.lang.String不被加载,也就是不会被使用。
这个问题涉及到加载器的委托机制,在类加载器的结构图中,
BootStrap是顶层父类,ExtClassLoader是BootStrap类的子类,ExtClassLoader又是AppClassLoader的父类
这里以java.lang.String为例,当我是使用到这个类时,Java虚拟机会将java.lang.String类的字节码加载到内存中。
为什么只加载系统通过的java.lang.String类而不加载用户自定义的java.lang.String类呢?
因加载某个类时,优先使用父类加载器加载需要使用的类。如果我们自定义了java.lang.String这个类,
加载该自定义的String类,该自定义String类使用的加载器是AppClassLoader,根据优先使用父类加载器原理,
AppClassLoader加载器的父类为ExtClassLoader,所以这时加载String使用的类加载器是ExtClassLoader,
但是类加载器ExtClassLoader在jre/lib/ext目录下没有找到String.class类。然后使用ExtClassLoader父类的加载器BootStrap,
父类加载器BootStrap在JRE/lib目录的rt.jar找到了String.class,将其加载到内存中。这就是类加载器的委托机制。
所以,用户自定义的java.lang.String不被加载,也就是不会被使用。
0 0
- 自己写一个java.lang.String
- 自己写java.lang.String
- java能不能自己写一个类叫java.lang.System/String正确答案
- 2.1 :java能不能自己写一个类叫java.lang.System/String正确答案
- java能不能自己写一个类叫java.lang.System/String正确答案
- java能不能自己写一个类叫java.lang.System/String正确答案
- java能不能自己写一个类叫java.lang.System/String?
- 自己写一个java.lang.reflect.Proxy代理的实现
- 自己写一个java.lang.reflect.Proxy代理的实现
- 自己写一个string类
- 关于自己写的java.lang.String能不能被加载的问题
- 自己写一个简易的string类型
- 自己写自己的java.lang.Object会怎么样?
- 能不做自己写个类,也叫java.lang.String
- Java学习--能不能自己写个类,也叫System.lang.String?
- 能不能自己写个类,也叫 java.lang.String?
- 能不能自己写个类,也叫java.lang.String
- 能不做自己写个类,也叫java.lang.String?
- SQL查询为空的字段的写法is null 而不是=null
- 6.6 Android Framework - TransitionDrawable
- 这十二行代码是如何让浏览器爆炸的?
- java基础小程序,金山打字原理
- leetcode之Number of 1 Bits
- 自己写一个java.lang.String
- 5-15 计算圆周率 (15分)
- laytpl JavaScript模板引擎使用
- 【JQuery】使用remove()和empty()方法删除元素
- 引用(一)
- 手机市场远远没有饱和
- 遍历树节点
- uva 11100 The Trip, 2007
- JAVA的静态变量、静态方法、静态类