繁体   English   中英

是否有可能将我自己的课程纳入第三方套餐?

[英]Is it possible to put my own class into a 3rd party package?

假设在我自己的项目中,我使用名为com.3rdparty.foo第三方软件包,在该软件包中有一个包含私有字段的类:

package com.3rdparty.foo;

public class Bar {
    public void someMethod () { ... }

    int ppField;
}

现在我意识到包私有字段不应该在该包之外访问。 但是,出于好奇,技术上可以编写我自己的类并将其归因于第三方包,例如,绕过包私有字段保护:

// MyOwnClass.java

package com.3rdparty.foo;
import com.3rdparty.foo.Bar;

public class MyOwnClass {
    public int hackPPField (Bar b) { return b.ppField; }
}

我希望这在技术上是不可能的。 但是,如果确实如此,那么我想知道封装密封的确切机制,这会阻止您随意扩展第三方软件包。

是的,在一般情况下完全可能。 你的类和包中的其他类必须由同一个类加载器加载,如果我没有弄错,你不能把类放在某些包中(例如java.lang ;事实上,我认为它是全部的java.包),但在一般情况下,没有什么可以将您的类与com.3rdparty.foo其他类区分开来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM