我可以创建自定义java.*包吗?

我可以创建自定义java.*包吗?,java,packages,Java,Packages,我可以创建一个与预定义包同名的包吗 在Java中,例如Java.lang 如果是,结果会是什么?这难道不能让我访问该包的受保护的成员吗 如果没有,是什么阻止我这样做的?否-java.lang是禁止的。安全管理器不允许在java.lang包中使用“自定义”类,也没有办法告诉他接受它们 您在java.lang命名空间中声明了自己的类,它允许您在该包中使用protected方法和类的成员,这是绝对不需要的 这编译得很好,但请尝试执行它;) 有两件事阻止你 1) 许可协议。“注意:不应部署使用此选项重

我可以创建一个与预定义包同名的包吗
在Java中,例如
Java.lang

如果是,结果会是什么?这难道不能让我访问该包的受保护的成员吗


如果没有,是什么阻止我这样做的?

否-
java.lang
是禁止的。安全管理器不允许在
java.lang
包中使用“自定义”类,也没有办法告诉他接受它们

您在
java.lang
命名空间中声明了自己的类,它允许您在该包中使用
protected
方法和类的成员,这是绝对不需要的


这编译得很好,但请尝试执行它;)


有两件事阻止你

1) 许可协议。“注意:不应部署使用此选项重写rt.jar中的类的应用程序,因为这样做会违反Java 2运行时环境二进制代码许可证。”

2) 您必须使用
-Xbootclasspath:bootclasspath
或添加一个lib/approved目录


由于JVM中的内部优化,某些类不容易修改,例如,您不能向Sun/Oracle的JVM添加多个对象方法;)

禁止任何与“java.*”匹配的包名,并将引发安全异常。

我刚刚给出了java.lang作为示例包?你说安全经理会阻止的。但这是否意味着我可以这样做?例如,对于没有安全管理器或某种许可的第三方包?@AB Najjar-当然-您可以在与其他工具相同的命名空间(=包)中声明您的类。然后您可以使用它们的包私有类、方法和字段。他们可以用你的。但是:考虑到这在技术上是可能的,通常是很差的练习。以合作的方式使用其他LIB,通常人们知道为什么他们将文件包声明为私有。这将允许我访问该文件包受保护的成员?!这不是很尴尬甚至是错误吗?不总是这样。只需考虑一个库及其单元测试。测试保存在一个单独的jar中,测试类在相同的包中声明。这允许测试包私有函数。非常有用。
package java.lang;

public class EvilAsEvilCanBe {

    public static void main(String[] args) {
        System.out.println("hehe");
    }

}