Java中的字段初始化类似于C中的字段初始化#

Java中的字段初始化类似于C中的字段初始化#,java,c#,Java,C#,java不允许像C一样初始化字段吗 我想我在什么地方读过。但我找不到它,因为字段初始化似乎是另一回事 java不允许像C一样初始化字段吗 是的 但是这个 return new MyClass { // doesn't work in Java var1 = myVar1, var2 = myVar2, var3 = myVar3 }; 不是字段初始化,在C#中称为对象初始化,java不提供这种语法 java不允许像C一样初始化字段吗 是的 但是这个

java不允许像C一样初始化字段吗

我想我在什么地方读过。但我找不到它,因为字段初始化似乎是另一回事

java不允许像C一样初始化字段吗

是的

但是这个

 return new MyClass { // doesn't work in Java
      var1 = myVar1,
      var2 = myVar2,
      var3 = myVar3
   };
不是字段初始化,在C#中称为对象初始化,java不提供这种语法

java不允许像C一样初始化字段吗

是的

但是这个

 return new MyClass { // doesn't work in Java
      var1 = myVar1,
      var2 = myVar2,
      var3 = myVar3
   };

不是字段初始化,在C#中称为对象初始化,java不提供这种语法。

不,java不允许这样。Java语法没有提供等效的语法。您可以更接近于初始化匿名类,但这不是一回事


因此,真正的答案是Java不支持字段初始化,但支持C#不支持的匿名类实例化

不,Java不允许这样做。Java语法没有提供等效的语法。您可以更接近于初始化匿名类,但这不是一回事


因此,真正的答案是Java不支持字段初始化,但支持C#不支持的匿名类实例化

java中没有等价物。但在Java8中,您可以像c#对象初始化一样进行模拟。首先定义这样一个函数

    public static <T, R> R apply(final T t, final Function<T, R> function) {
        return function.apply(t);
    }
    final McTrack track = Util.apply(new McTrack(), mcTrack -> {
        mcTrack.setArea(Util.apply(new Area(), area -> {
            area.setId(1L);
            area.setName("Dhaka South");
            area.setRegion(Util.apply(new Region(), region -> {
                region.setId(1L);
                region.setName("Dhaka");
                return region;
            }));
            return area;
        }));
        mcTrack.setId(1L);
        mcTrack.setDate(new Date());
        return mcTrack;
    });

我发现它非常有用。

在java中没有等价物。但在Java8中,您可以像c#对象初始化一样进行模拟。首先定义这样一个函数

    public static <T, R> R apply(final T t, final Function<T, R> function) {
        return function.apply(t);
    }
    final McTrack track = Util.apply(new McTrack(), mcTrack -> {
        mcTrack.setArea(Util.apply(new Area(), area -> {
            area.setId(1L);
            area.setName("Dhaka South");
            area.setRegion(Util.apply(new Region(), region -> {
                region.setId(1L);
                region.setName("Dhaka");
                return region;
            }));
            return area;
        }));
        mcTrack.setId(1L);
        mcTrack.setDate(new Date());
        return mcTrack;
    });

我发现它非常有用。

“像C#does”-这句话是什么意思?“像C#does”-这句话是什么意思?@aleroot阅读了完整的答案是的,但第一部分是wrong@aleroot类X{int i=5;}不是字段初始化否,Java不像c#那样支持字段初始化。请阅读我的答案或文档。哦,我的天哪,@aleroot,好吧,没有。Ramanlfc好的,是的。@aleroot阅读完整答案是的,但第一部分是wrong@aleroot类X{int i=5;}不是字段初始化否,Java不像c#那样支持字段初始化。请阅读我的答案或文档。哦,我的天哪,@aleroot,好吧,没有。好的,是的。