关于Java内部接口的一个问题
比如:class A{
public interface I1{
void func();
}
}
class B{
public static interface I2{
void func();
}
}
请问I1和I2有什么区, 也就是静态内部接口与非静态内部接口有什么区别?
问题补充:
lovewhzlq 写道
对于I1来说,你要使用它的接口,必须先有A的实例
对于I2来说,直接B.I2就能使用了
对于I2来说,直接B.I2就能使用了
楼上说的是适用于内部类和嵌套类的情况, 但内部接口却不是如此, 看下面的例子:
class TestClass {
public interface I1 {
void Test();
}
public static interface I2 {
void Test2();
}
};
class IImpl implements TestClass.I1 {
@Override
public void Test() {
System.out.print("IImpl Test");
}
}
class IImpl2 implements TestClass.I2 {
@Override
public void Test2() {
System.out.print("IImp2 Test");
}
}
public class MyTest {
/**
* @param args
*/
public static void main(String[] args) {
TestClass.I1 i = new IImpl();
i.Test();
TestClass.I2 i2 = new IImpl2();
i2.Test2();
}
}
无论接口有没有Static, 都可以正常被实现.
内部接口本来就是静态对象,无需用static关键字申明。