我可以创建一个自定义的java。*包吗?

时间:2011-04-15 14:25:33

标签: java packages

我可以创建一个与预定义包具有相同名称的自己的包 在Java中,例如java.lang

如果是这样,结果会是什么?这不是我能够访问该软件包的受保护的成员吗?

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

3 个答案:

答案 0 :(得分:7)

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

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


这编译很好 - 但是 - 尝试执行它;)

package java.lang;

public class EvilAsEvilCanBe {

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

}

答案 1 :(得分:3)

禁止任何与“java。*”匹配的包名称,并抛出安全异常。

答案 2 :(得分:2)

有两件事阻止你。

1)许可协议。 “注意:不应该部署使用此选项来覆盖rt.jar中的类的应用程序,因为这样做会违反Java 2 Runtime Environment二进制代码许可证。” http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html

2)您必须使用-Xbootclasspath:bootclasspath或添加lib / endorsed目录。

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