Java中是否有类似于C#中的对象创建表达式
本文关键字:对象 创建 表达式 类似于 是否 Java | 更新日期: 2023-09-27 18:00:35
在C#中,我可以为我编写的每个自定义类创建一个实例,并为其成员传递值,如下所示:
public class MyClass
{
public int number;
public string text;
}
var newInstance = new MyClass { number = 1, text = "some text" };
这种创建对象的方式称为对象创建表达式。有没有一种方法可以在Java中做到这一点?我想为类的任意公共成员传递值。
不,没有任何直接相似之处。在Java中(无需编写构建器类等),最接近的方法是使用匿名的内部类和初始化器块,这很可怕,但很有效:
MyClass foo = new MyClass()
{{
number = 1;
text = "some text";
}};
注意双大括号。。。一个表示"这是匿名内部类的内容",另一个表示初始化器块。我个人不会推荐这种风格。
否。但我不觉得下面的代码太冗长
MyClass obj = new MyClass();
obj.number = 1;
obj.text = "some text";
或者好的老构造函数调用太令人困惑的
MyClass obj = new MyClass(1, "some text");
有些人可能会建议方法链接:
MyClass obj = new MyClass().number(1).text("some text");
class MyClass
int number
public MyClass number(int number){ this.number=number; return this; }
这需要每个字段有一个额外的方法。这是锅炉板代码,IDE可能会在这里有所帮助。
然后是构建器模式,这对于API作者来说是更多的工作。