在不扩展类的情况下将方法添加到不同文件中的Java类

时间:2013-05-21 19:42:53

标签: java class function methods extends

package com.companyxyz.api.person;

public class Man {
    public var1;
    public var2;
    ...
    private static void createAuth() {
    ...
    }
    // public methods go here
    ...
}

我想创建一个新的公共方法来访问私有方法 createAuth ,但是在另一个文件中。有没有办法创建这个新方法而无需编写或通过扩展类访问它?

谢谢。

3 个答案:

答案 0 :(得分:5)

没有。您无法从其他类访问私有方法。因为它是私人的。

答案 1 :(得分:4)

任何外部类都无法访问私有方法(包括子类)。

解决方法可能是使用反射,但由于多种原因(脆弱性,性能问题,破坏封装等),这不是一般推荐的方法。

答案 2 :(得分:1)

在Java中没有干净且推荐的通用方法。 private是私有的。

但您没有声明为什么要执行此操作以及特定约束是什么。因此,我将两个选项放入混合中:

  • 您可以反编译Man的类文件,设置您想要保护或公开的所有内容并重新编译(并重新打包到jar文件中)。也许没有必要反编译,也许对类文件的一些操作也可以完成这项工作。

  • 您可以使用字节码操作库编写自定义ClassLoader,以便在运行时修改类的字节码。然后,您还可以添加其他所需内容的访问路径。但请注意,这是非常高级/复杂的东西。

这两种方式都不是你可以使用/应该用于普通应用程序或通常的框架。