這個函式是Collections類別的一個方法,為什麼要特別提出來呢?主因是我在看SCJP Java 6專業認證手冊(附光碟)這本書的第9章執行緒的部份有個範例:
import java.util.*;
public class NameList {
private List names = Collections.synchronizedList(new LinkedList());
public void add(String name) {
names.add(name);
}
public String removeFirst() {
if(names.size()>0)
return (String)names.remove(0);
else
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
這個範例出現了這樣錯誤:
The method synchronizedList(List<T>) in the type Collections is not applicable for the arguments (LinkedList)
很奇怪吧!這一本課本也有出錯的時候,查了一下這個函式,發現在Std. Ed. v1.4.2的時候定義是這樣:
synchronizedList(List list)
Returns a synchronized (thread-safe) list backed by the specified list.
但是到了Standard Ed. 5.0時候,定義已經變成:
synchronizedList(List<T> list)
Returns a synchronized (thread-safe) list backed by the specified list.
所以我在想終於被我發現到課本沒有隨著Java更新到SCJP 6喔!Bug!