谁能告诉我下面两行代码的区别?
ArrayList<Car> dat;
dat = (new DataSource()).getCar();
DataSource ds = new DataSource();
dat = ds.getCar();
把new DataSource()
放在括号里是什么意思?
最后这两种情况dat的结果是什么?
ArrayList<Car> dat;
ArrayList<Car> dat = new ArrayList();
注意:getCar
辅助函数返回一个 ArrayList 到 dat
。
最佳答案
在
ArrayList<Car> dat;
dat = (new DataSource()).getCar();
括号是多余的。你同样可以写
dat = new DataSource().getCar();
在您引用的另一个版本中,您正在做一件额外的事情 - 创建一个引用您的 DataSource
的变量,供以后使用。
在回答你的第二个问题时,
ArrayList<Car> dat;
不创建对象。这里没有ArrayList
,只是一个不引用任何内容的变量。另一方面,
ArrayList<Car> dat = new ArrayList();
同时创建一个 ArrayList
和一个引用它的变量。
关于java - Java 中可以进行匿名对象实例化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18840752/