【问题标题】:Is it possible to override public method from private internal class?是否可以从私有内部类覆盖公共方法?
【发布时间】:2012-10-09 21:50:25
【问题描述】:

有以下问题:我有一个内部私有类,它有公共方法,我需要重写它。是否可以使用 Java 反射?

更新:

public class MyPublicClass {

    private class MyPrivateClass {
        public void doPublicMethod() {}
    }
}

【问题讨论】:

  • 你能把源代码贴在这里吗?
  • 抱歉,请看更新
  • @Drogba,请告诉我,你能帮忙吗?
  • 不,没有一些字节码操作是不可能的。

标签: java


【解决方案1】:

我能想到的唯一方法是使用这样的单独私有类:

public class MyPublicClass {

    private class MyPrivateClass {
        public void doPublicMethod() {}
    }

    private class Test extends MyPrivateClass {
        @Override
        public void doPublicMethod() {
            // Do your stuff
        }
    }
}

但这并没有使用反射。

【讨论】:

  • 那么,正如 Denis Tulskiy 在 cmets 中所说,通过正常方式是不可能的。
【解决方案2】:

单独使用反射是不可能的。但是您可以使用AspectJ 或其他面向方面的Java 编程库来管理。它允许您使用某些规则修改字节码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    相关资源
    最近更新 更多