比如java集合
我看有的代码是List<?> list=new ArrayList<?>();有的是ArrayList<?> list=new ArrayList<?>();类似的还很多,map的也是一样,不是很明白
大部分情况下,两种写法并没有什么区别。仅仅是写法习惯的问题。在比较严肃的设计中,我们往往希望作为函数参数传入的参数尽可能用抽象的类型表示,这样的函数有更广泛的适用范围,而函数的返回值尽可能用具体的类型,以便调用者更精确知道返回的类型。
对于继承,我们希望派生类使用的类型尽可能具体的类型表示,这被称为里氏替换原则。