一个类中的嵌套接口如何表现?

时间:2015-09-05 05:09:14

标签: java interface inner-classes

对于以下代码,

interface SuperInterface{
    void f();
    interface StaticNestedInterface{    
    }
}

class Sub implements SuperInterface{
    public void f(){

    }
}

public class Dummy {

    public static void main(String[] args) {
        Sub x  = new Sub();
    }

}

编译器不会要求class Sub实施interface StaticNestedInterface

class Sub是否是有效的java代码?

3 个答案:

答案 0 :(得分:1)

是的,它是一个有效的Java代码。 您只需在StaticNestedInterface中声明SuperInterface即可。使用嵌套接口的一种方法是

interface SuperInterface {
    void f();

    StaticNestedInterface sni();

    interface StaticNestedInterface {
        void a();
    }
}


class Sub implements SuperInterface{
    public void f(){

    }

    @Override
    public StaticNestedInterface sni() {
        return null;
    }
}

答案 1 :(得分:0)

是的,它是一个有效的java代码。 Java编译器将创建public static SuperInterface$StaticNestedInterface{}

要使用嵌套接口class Sub implements SuperInterface.StaticNestedInterface,编译器将要求Sub类实现在StaticNestedInterface上声明的方法

答案 2 :(得分:-1)

interface StaticNestedInterface{    
  void a();
  void b();
}

interface SuperInterface extends StaticNestedInterface{
    void f();
}
class Sub implements SuperInterface{
    //now compiler require all methods(a, b and f)
}