本质上,代码是由编译器重写为(请注意,我没有尝试对其进行编译……,可能会有错误):
class Main$1<T> extends ArrayList<T>{ private final List<T> list; Main$1(final List<T> a) { list = a; } @Override public boolean add(T element) { super.add(element); return list.add(element); }}和
class Main{ public static <T> List<T> modifiedList(final List<T> list) { return new Main$1<T>(list); } public static void main(String[] args) { List<String> originalList=new ArrayList<String>(); List<String> duplicateList=modifiedList(originalList); originalList.add("1"); originalList.add("2"); originalList.add("3"); System.out.println(originalList+" "+duplicateList); duplicateList.add("4"); duplicateList.add("5"); duplicateList.add("6"); System.out.println(originalList+" "+duplicateList); }


