Java synchronizedList

这个函式是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!