我正在使用 java 进行编码,并且有一个带有3个不同构造函数的类 Point
。我想创建3个对象,每个构造函数都是一行。这是我写的:
Point p1 = new Point();
Point p2 = new Point(0.5, 6.);
Point p3 = new Point(p2);
是否可以将其写在一行上? 谢谢!
答案 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)
。
但是您应该为此配备一个合适的案例类 要点。