最近观赏同事的代码,发现他实例化了接口,但是是以匿名类来实例化的,我记得接口和抽象类是不能被实例化的,用的时候要设计或者继承,可是他的代码是没有出现bug,后来找找资料才想起来 匿名类可以变相的实现接口,资料如下:
我们知道Java不支持接口方法。现在我们可以使用匿名内部类来变相实现。
interface I1 {
void test();
}
interface I2 {
void test();
}
class Class1 {
public I1 toI1() {
return new I1(){
public void test() { System.out.println("I1 test..."); }
};
}
public I2 toI2() {
return new I2(){
public void test() { System.out.println("I2 test..."); }
};
}
}
public class program {
public static void main(String[] args) {
Class1 o = new Class1();
I1 i1 = o.toI1();
I2 i2 = o.toI2();
i1.test();
i2.test();
}
}
输出:
I1 test...
I2 test...