在Java的一行中声明多个对象

时间:2018-07-19 12:23:50

标签: java object

我正在使用 java 进行编码,并且有一个带有3个不同构造函数的类 Point 。我想创建3个对象,每个构造函数都是一行。这是我写的:

Point p1 = new Point();
Point p2 = new Point(0.5, 6.);
Point p3 = new Point(p2);

是否可以将其写在一行上? 谢谢!

4 个答案:

答案 0 :(得分:3)

您的意思是:

Point p1 = new Point(), p2 = new Point(0.5, 6.), p3 = new Point(p2);

我假设您在Point类中具有三个不同的构造函数。


但是请注意,如果这样做,它将无法正常工作:

Point p1 = new Point(), p3 = new Point(p2), p2 = new Point(0.5, 6.);// Error
                                       ^^   ^^ 

在这种情况下,顺序很重要,您必须评估第一个对象p1,然后才能根据第二个对象创建第三个对象p3

答案 1 :(得分:3)

简单的答案:不是。

当然,您可以避免换行并放

Point p1 = ... ; Point p2 = ...

一行。或者:

Point p1 = new Point(), p2 = new Point(0.5, 6.), p3 = new Point(p2);

将; +换行符变成逗号。

仅作记录:您将事物命名为“ point1,point2,point3”这一事实表明您可能在做错事。在变量名称中添加索引基本上意味着您应该使用数组,列表或映射。

另一件事:您的意图始终是编写对其他人来说易于阅读和理解的代码。将更多信息填充到一行中(通常)对实现该目标没有帮助。

答案 2 :(得分:1)

好的。

Point p1 = new Point(), p2 = new Point(0.5, 6), p3 = new Point(p2);

答案 3 :(得分:0)

您可以将每个语句写在用半冒号分隔的一行中。

Point p1 = new Point(); Point p2 = new Point(0.5, 6.); Point p3 = new Point(p2);

Point p1 = new Point(), p2 = new Point(0.5, 6.), p3 = new Point(p2);

因此可以在Java中避免换行。

如果使用 scala ,则可以使用 case classes 的概念来达到您的期望。在Scala中,我们不需要使用 new 关键字来实例化对象。您可以直接将实例创建为

val p1 = Point() 要么 val p2 = Point(0.5,6.) 要么 val p3 = Point(p2)

但是您应该为此配备一个合适的案例类 要点