c# - 可以在 Java 中使用 C# 样式的对象初始化吗?

标签 c# java initialization

在 C# 中可以这样写:

MyClass obj = new MyClass()
{
    field1 = "hello",
    field2 = "world",
    field3 = new MyOtherClass()
    {
        etc....
    }
}

我可以看到数组初始化可以用类似的方式完成,但类似上面的事情也可以在 Java 中完成,如果可以,语法是什么?

最佳答案

Java 中不存在这种初始化语法

类似的方法是使用双括号初始化,您可以在其中创建一个带有初始化 block 的匿名内部子类:

MyClass obj = new MyClass() {{
  // in Java these would be more like this: setFieldX(value);
  field1 = "hello";
  field2 = "world";
  field3 = new MyOtherClass() ...
}};

请注意,您实际上是在创建一个子类

另一种方法是为 MyClass 创建一个构建器,并拥有如下代码:

MyClass obj = new MyClassBuilder().
  withField1("hello").
  withField2("world").
  withField3(new MyOtherClass()).
  build();

关于c# - 可以在 Java 中使用 C# 样式的对象初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668156/

相关文章:

java - 验证 Java 平台独立性

java - Mockito - 模拟子类方法调用

ios - init 不调用自定义类 swift

java - 在 for 循环中使用相同变量名初始化多个对象时会发生什么?

c# - 将静态成员分配给 const

c# - WCF - 设计参数决策

c# - C# 中的 RSA 不会为特定 key 生成相同的加密字符串?

java - 将组件放入较小的组件内

c# - Windows 窗体 : Obtain window size to fit a picture box containing an image

c - 如何使用指向另一个字段的字段初始化结构?