Java 匿名类中的访问重写函数

Java 匿名类中的访问重写函数,java,design-patterns,polymorphism,overriding,anonymous-class,Java,Design Patterns,Polymorphism,Overriding,Anonymous Class,我试图扩展一个类,以便以多态方式将其函数作为特权运行。我希望避免修改示例中的基类,foore,并且我绝对希望避免反射。最近我主要使用javascript和python,所以我一直在重复“使用函数指针”,但由于函数不是java中的第一类对象,所以这不是一个选项。这似乎是一个有效的目标,所以我假设有人知道一个好的设计模式 public class SecureFooer extends Fooer() { @Override public Object foo() {

我试图扩展一个类,以便以多态方式将其函数作为特权运行。我希望避免修改示例中的基类,
foore
,并且我绝对希望避免反射。最近我主要使用javascript和python,所以我一直在重复“使用函数指针”,但由于函数不是java中的第一类对象,所以这不是一个选项。这似乎是一个有效的目标,所以我假设有人知道一个好的设计模式

public class SecureFooer extends Fooer()
{
    @Override
    public Object foo()
    {
        PrivilegedAction<Object> action = new PrivilegedAction<Object>() {
            @Override
            public Object run() {
                // This isn't going to work, i'm inside PrivilegedAction
                return super.foo()
            }
        };
        return AccessController.doPrivileged(action);
    }
}
公共类SecureFoore扩展了Foore()
{
@凌驾
公共对象foo()
{
PrivilegedAction=newprivilegedaction(){
@凌驾
公共对象运行(){
//这行不通,我在隐私区
返回super.foo()
}
};
返回AccessController.doPrivileged(操作);
}
}
语法是

return SecureFooer.super.foo();
这是因为
PrivilegedAction
匿名类是
securefoore
的内部类,所有内部类都可以访问其封闭实例以及该实例的超级实现。

语法是

return SecureFooer.super.foo();
这是因为
PrivilegedAction
匿名类是
securefoore
的一个内部类,所有内部类都可以访问它们的封闭实例,以及该实例的超级实现。

我在发布了这个问题之后阅读了之后尝试了这个方法。我验证了它的有效性,并准备发布答案,但似乎你比我抢先一步。谢谢我在发布了这个问题后,在阅读后尝试了这个方法。我验证了它的有效性,并准备发布答案,但似乎你比我抢先一步。谢谢