访问匿名类中的重写函数

时间:2014-06-26 20:37:51

标签: java design-patterns polymorphism override anonymous-class

我试图扩展一个类,以便将其函数多态地运行为特权。我想避免修改示例中的基类Fooer,我绝对想避免反射。我最近一直主要使用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);
    }
}

1 个答案:

答案 0 :(得分:4)

语法是

return SecureFooer.super.foo();

这是有效的,因为PrivilegedAction匿名类是SecureFooer的内部类,所有内部类都可以访问它们的封闭实例,以及该实例的超级实现。