优先使用接口而不是类

正在研读Joshua Bloch的《Effective Java》一书。书中至少在两条中提到了“优先使用接口而不是类”,一是第25条中的“参数类型优先使用接口而不是类”;另一个是第34条中的“通过接口引用对象”。

 

两条中所提及的例子一个是Map,一个是List(因为此书的作者就是Collection Framwork的作者)

 

Map ht = new Hashtable();

 

String value= doSomething(ht);

 

private String doSomething(Map pram) {

    .....

    // 比如这里需要 pram.clone(); 该怎么办呢?

    Map pram2 = pram.clone();   // 会出错的,因为Map接口中没有clone方法,那是Cloneable接口中的

}

 

 

书上说“没有理由在编写一个方法时使用Hashtable作为输入,相反,应该使用Map”。

 

但是我想问的是:一个类可能实现多个接口,如果不同接口中所定义的方法,都要用到,那么该选择哪个接口作为“代表”呢?恐怕哪个都是片面的。比如,如果我要在方法对传入的参数做clone操作,那么就必须使用Hashtable作为参数了,因为它还实现了Cloneable接口。

 

可以说这种时候,就是一个充分的理由,使用类(Hashtable)来声明了吗??

你可能感兴趣的:(接口)