package com.companyxyz.api.person;
public class Man {
public var1;
public var2;
...
private static void createAuth() {
...
}
// public methods go here
...
}
我想创建一个新的公共方法来访问私有方法 createAuth ,但是在另一个文件中。有没有办法创建这个新方法而无需编写或通过扩展类访问它?
谢谢。
答案 0 :(得分:5)
没有。您无法从其他类访问私有方法。因为它是私人的。
答案 1 :(得分:4)
任何外部类都无法访问私有方法(包括子类)。
解决方法可能是使用反射,但由于多种原因(脆弱性,性能问题,破坏封装等),这不是一般推荐的方法。
答案 2 :(得分:1)
在Java中没有干净且推荐的通用方法。 private
是私有的。
但您没有声明为什么要执行此操作以及特定约束是什么。因此,我将两个选项放入混合中:
您可以反编译Man
的类文件,设置您想要保护或公开的所有内容并重新编译(并重新打包到jar文件中)。也许没有必要反编译,也许对类文件的一些操作也可以完成这项工作。
您可以使用字节码操作库编写自定义ClassLoader
,以便在运行时修改类的字节码。然后,您还可以添加其他所需内容的访问路径。但请注意,这是非常高级/复杂的东西。
这两种方式都不是你可以使用/应该用于普通应用程序或通常的框架。