小编Sel*_*ile的帖子

Java匿名内部类调用封闭类型超类型方法

我举一个例子来设置一些上下文,所以我有两个接口,每个接口继承相同的父接口并定义它们自己的父接口的抽象方法的实现.

interface A
{
    Set a();
}

interface B extends A
{
    @Override
    default Set a()
    {
        return null;
    }
}

interface C extends A
{
    @Override
    default Set a()
    {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

在一个名为的接口中D,该实现创建了一个匿名内部类,然后需要调用超类型(BC)a()实现.

interface D extends B, C
{
    @Override
    default Set a()
    {
        return new HashSet()
        {
            {
                final int totalSize = D.this.B.super.a().size() + D.this.C.super.a().size();
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是表达式D.this.B.super.a()D.this.C.super.a()没有成功编译,所以是什么?

谢谢你的努力.

java anonymous-inner-class default-method

4
推荐指数
1
解决办法
68
查看次数