【发布时间】:2013-12-06 05:20:48
【问题描述】:
我正在尝试使用以下方式创建 List 实例:
List<String> listOne = new ArrayList<String>();
List<String> listTwo = new ArrayList<String>(){};
List<String> listThree = new ArrayList<String>() {{}};
只有listOne 被初始化为java.util.ArrayList,但listTwo 和listThree 不是。
初始化listTwo和listThree会发生什么以及如何更好地理解它?
我的测试示例如下:
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> listOne = new ArrayList<String>();
List<String> listTwo = new ArrayList<String>(){};
List<String> listThree = new ArrayList<String>() {{}};
System.out.printf("listOne.getClass() == listTwo.getClass() is %b \n",
listOne.getClass() == listTwo.getClass());
System.out.printf("listOne.getClass() == listThree.getClass() is %b \n",
listOne.getClass() == listThree.getClass());
System.out.printf("listThree.getClass() == listTwo.getClass() is %b \n",
listThree.getClass() == listTwo.getClass());
System.out.printf("listOne.getClass() is %s \n",listOne.getClass());
System.out.printf("listTwo.getClass() is %s \n",listTwo.getClass());
System.out.printf("listThree.getClass() is %s \n",listThree.getClass());
}
}
它在控制台的输出如下:
listOne.getClass() == listTwo.getClass() is false
listOne.getClass() == listThree.getClass() is false
listThree.getClass() == listTwo.getClass() is false
listOne.getClass() is class java.util.ArrayList
listTwo.getClass() is class Test$1
listThree.getClass() is class Test$2
【问题讨论】:
-
尝试阅读这篇文章,你会找到答案:[1]:stackoverflow.com/questions/924285/…