实在是太坑爹了!!!!!
jdk7的api里面,他有三个remove方法
return type | method | Description |
---|---|---|
E | remove() | Retrieves and removes the head (first element) of this list. |
E | remove(int index) | Removes the element at the specified position in this list. |
boolean | remove(Object o) | Removes the first occurrence of the specified element from this list, if it is present. |
没错!就是那么坑爹,正常人都会以为是重载的重名方法吧,结果他喵的居然不是!!找原因必须上祖坟去找!
LinkedList实现了List接口,而List接口继承了Collection接口。LinkedList还实现了Queue接口。虽然不是直接实现的,而是实现接口的自接口,但是大概是酱紫的没错了。
Linked===>List—–>Collection。
Linked===>Queue。
- Collection中只定义了一个remove方法,就是
remove(Object o)
- List中定义了另外一个remove方法,是
remove(int index)
- Queue中定义了最后一个remove方法 ,是
remove()
所以根据接口的语义,稍微注意一下还是可以很好区分的,但是依然很坑爹!接口中的函数名重名这种事情在java的核心api中出现简直要死!
这个故事告诉我们,取一个好的函数名称是多么的重要!