[英]Java trying to find 3rd party class in my package even though that class is in an included JAR
[英]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.