何时在类中实现接口以及何时实例化接口的匿名实现。以下是两个界面。
public interface InterfaceOne {
void one();
}
public interface InterfaceTwo {
void two();
}
方法1:在类
中实现接口public class A implements InterfaceOne, InterfaceTwo {
private void doSomething() {
Hello hello = new Hello();
hello.hi(this);
hello.bye(this);
}
@Override
public void one() {
//One
}
@Override
public void two() {
//Two
}
}
方法2:实例化接口的匿名实现
public class B {
private void doSomething() {
Hello hello = new Hello();
hello.hi(interfaceOne);
hello.bye(interfaceTwo);
}
private InterfaceOne interfaceOne = new InterfaceOne() {
@Override
public void one() {
//One
}
};
private InterfaceTwo interfaceTwo = new InterfaceTwo() {
@Override
public void two() {
//Two
}
};
}
我们需要使用方法1和方法2的情景是什么?
答案 0 :(得分:1)
使用Java8稍微改变了一些东西,因为使用功能接口你可以定义lambdas,它们在内部被管理为匿名类,所以尴尬的语法有所保存。
在任何情况下,匿名类只有在处理不需要命名的事物时才有意义(想想按钮的ActionListener
)。相反,命名类总是有意义的,没有明确的理由避免命名类。