關於Java內部接口的一個問題
比如:class A{
public interface I1{
void func();
}
}
class B{
public static interface I2{
void func();
}
}
請問I1和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關鍵字申明。