java - 把我的类放到别人的包中才能访问包可见的方法?

标签 java package access-modifiers

我知道这当然不是一个好的做法,但是 Java 是否提供了任何机制来防止访问包私有(private)方法/属性?如果不是,这是否意味着:

package com.other_people_other_company;

public class MyClass {
  // Let's hack! Access all package privates
}

有效吗?

编辑:

答案中提到:

Name: myCompany/myPackage/
Sealed: true

这对我来说是新信息。但是,如果我通过分发我的一 jar 并将其他人的包裹密封在那里来进行破坏怎么办?例如。 名称:org.apache 密封:true

最佳答案

假设 .JAR 分发,您可以 seal the packages将以下行添加到 META-INF/MANIFEST.MF 中:

Name: myCompany/myPackage/
Sealed: true

一些注意事项:

  • 每个包都需要自己的条目。
  • 这并不能阻止狡猾的人从 list 文件中删除这些行并在内部重新分发它。如果这是一个问题,您可能需要研究一些 self 验证技术,例如强制密封包中的类以检查 list 是否未受影响。

关于java - 把我的类放到别人的包中才能访问包可见的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34836363/

相关文章:

java - 用 math pow 阅读计算错误

java - 从 Java 中的多个单选按钮组获取输入

bash - 符号链接(symbolic link)不是由 *.deb 包的 postinst 创建的。改为创建新文件

java - 从另一个包读取文件 - Java

java - 有没有办法更改 final方法的访问修饰符范围?

java - 是否对独立 swing 应用程序中的所有字段使用 private 修饰符?

java - 项目 'X' 缺少所需的源文件夹 : 'target/generated-resources/eclipse'

java - 错误 - 需要类接口(interface)或枚举

Java 继承和访问修饰符

java - 将属性从一个 bean 复制到另一个 : Java