java - Java 中可以进行匿名对象实例化吗?

标签 java

谁能告诉我下面两行代码的区别?

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/

相关文章:

java - 当不同的键具有相同的哈希码时,为什么 HashMap 中没有冲突

java - 如何从谷歌驱动器直接下载链接获取文件扩展名?

JAVA - 使用列表重构多个 "instanceof"

java - Play Framework 使用不受支持的 MySQL 语法演变

java - 在 Java 8 中成对组合两个数组的优雅方式

java - 为什么线程不等待 notify()?

java - 即使没有参数构造函数,隐式 super 构造函数也是未定义的?

java - OpenGL ES 2.0 : From orthogonal to perspective (card flip effect)

java - 在 Java 中将二维数组的列作为参数传递

java - 将json数据映射到对应的Class