问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java应用类的包名为什么不能以java.开头

发布网友 发布时间:2022-04-30 14:38

我来回答

2个回答

热心网友 时间:2022-06-23 06:13

我们自己编写的Java类默认情况下都由系统类加载器加载。系统类加载器也是ClassLoader的子类,也是通过调用ClassLoader.loadClass(name)方法来加载类,而扩展ClassLoader类的一般做法就是重写findClass(name)方法,然后调用defineClass(String name, byte[] b, int off, int len)返回。所以我们可以直接看ClassLoader的defineClass(String name, byte[] b, int off, int len)方法。
defineClass(String name, byte[] b, int off, int len)方法:
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
protected final Class<?> defineClass(String name, byte[] b, int off, int len)
throws ClassFormatError
{
return defineClass(name, b, off, len, null);
}
defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain)方法:
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
protected final Class<?> defineClass(String name, byte[] b, int off, int len,
ProtectionDomain protectionDomain)
throws ClassFormatError
{
check();
protectionDomain = preDefineClass(name, protectionDomain);

Class c = null;
String source = defineClassSourceLocation(protectionDomain);

try {
c = defineClass1(name, b, off, len, protectionDomain, source);
} catch (ClassFormatError cfe) {
c = defineTransformedClass(name, b, off, len, protectionDomain, cfe, source);
}

postDefineClass(c, protectionDomain);
return c;
}
preDefineClass(String name,ProtectionDomain protectionDomain)方法有如下一段代码:
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
if ((name != null) && name.startsWith("java.")) {
throw new SecurityException("Prohibited package name: " +
name.substring(0, name.lastIndexOf('.')));
}
如果类名不为空,并且以java.开头,就抛出异常!
当然,检测包名不只这么简单,正式加载字节码文件的时候还会对包名进行检测。

热心网友 时间:2022-06-23 06:14

JAVA 的JDK 自带的才是java.

~
~
~
~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
物流师证书就业前景 大话西游之战歌,齐天小圣,能吃几个1000年的蟠桃,才能变摸样? 高手们啊... 大话西游外传刚上来怎么就给的齐天小圣是紫色品阶的 大话西游之战歌。齐天小圣怎嘛打技能 大话西游外传怎么获得变色齐天小圣 大话西游外传领变异齐天小圣的是什么序列号 如何设置代理服务器(如何设置代理服务器地址) 家庭劳动有什么? ...和“而” 字的 用法 比如想介词啦 并想用学而实习之 之和而中点一... 铜陵职业技术学院是什么类别的学校 最近看到一个java程序,其中有一个方法的参数是 类名.class,不知道是什么意思,哪位高手能帮忙回答一下? 才子男装衬衫和裤子或有夹克采用什么风格设计 帮忙搭配两套衣服 什么是java中的class类 在Java中class和Class 的区别 JAVA问题,什么时候需要,Class类型的? 如何练快速腹肌和胸肌 谁知道这种女士衬衫什么牌子,在哪买? Class类有什么作用? 手机感觉被限制网速了 手机网速被限制了怎么在手机上解除限制? 人不能懒噶? 人为什么不能懒惰,为什么干活怕埋汰 人真的不可以懒吗? 做人为什么不能那么懒? 人不能懒,对不? 人懒好不好 懒对一个人的影响有多大? 人为什么不能那么懒? 为什么不要懒惰习惯? 35岁的男人穿什么颜色的衣服 男,182cm,体重130斤,胸围90cm,领围38cm,腰围78cm。 ,穿多大的衬衫? 有什么好品牌和款式推荐? 上点小说吧!!! 男人穿衣服怎样搭配好看? 男人穿衣服如何搭配 临泉属于淮河以南吗? 安徽省阜阳市临泉县属于北方还是南方 请问:在中国南北分界线,即秦岭淮河一线的划分后,江苏各市哪些属于南方,哪些属于北方? 安徽省淮南市是属于南方还是北方? 中国分南方和北方,到底是以什么为分界线来区分的? 河南是北方还是南方? 河南省郸城县位于安徽省临泉县哪个方向? 阜南在淮河以北,还是以南?阜南在淮河以北,还是以南?阜南县属于北方,还是南方? 安徽阜阳属于哪个地区,是华中,华东,还是华南??? 阜阳临泉老婆怎么叫 in all与all in分别是什么意思? in all与all in分别是什么意思? 苹果6plus 为什么充不了电? in all什么意思, 怎样造句? in all什么意思, 怎样造句?