建议31:在接口中不要存在实现代码
public interface IB {
public static final IS s = new IS() {
public void doSth() {
System.out.println("我在接口中实现了");
}
};
}public interface IS {
public void doSth();
}
public class Client {
public static void main(String[] args) {
IB.s.doSth();
}
}//结果打印出,我在接口中实现了
IB接口中声明了一个静态常量s,其值是一个匿名内部类,实现了接口IS.
这是一种不好的实现,接口是一种契约,不仅仅约束着实现者,同时也是一个保证,保证提供的服务(常量、方法)是稳定、可靠的。如果把实现代码写到了接口中,那就绑定了可能变化的因素。所以接口中虽然可以有实现,但是应该避免使用。