让我们说在我自己的项目中,我使用名为// MyOwnClass.java
package com.3rdparty.foo;
import com.3rdparty.foo.Bar;
public class MyOwnClass {
public int hackPPField (Bar b) { return b.ppField; }
}
的第三方软件包,在该软件包中有一个包含私有字段的类:
return foo
现在我意识到包私有字段不应该在该包之外访问。但是,出于好奇,技术上可以编写我自己的类并将其归因于第三方包,例如,绕过包私有字段保护:
function foo() {}
我希望这在技术上是不可能的。但是,如果确实如此,那么我想知道封装密封的确切机制,这会阻止您随意扩展第三方软件包。
答案 0 :(得分:1)
是的,在一般情况下完全可能。你的类和包中的其他类必须由同一个类加载器加载,如果我没有弄错的话,你不能把类放在某些包中(java.lang
,例如;事实上,我认为它是所有java.
个软件包),但在一般情况下,您的类与com.3rdparty.foo
中的其他类没有任何区别。