Java 相当于在 C# 中创建匿名对象?
在 C# 中,可以执行以下操作:
var objResult = new { success = result };
有没有Java的等价物?
在 C# 中,可以执行以下操作:
var objResult = new { success = result };
有没有Java的等价物?
Java没有通过关键字向C#提供类型推断,所以虽然你可以创建匿名类型,但它们并不好,因为你无法获得它们的属性。var
因此,您可以创建匿名类的实例,如下所示:
Object myobj = new Object() {
public final boolean success = true;
}
但是,由于是您无法在代码中访问的实例,并且由于您已经创建了匿名类的实例,因此根据定义,无法显式引用此类。myobj
Object
success
在C#中,通过推断类型来解决这个问题,但在Java中没有办法做到这一点。var
通常,匿名类用于创建接口和抽象类的实现,因此使用接口或父类作为类型进行引用。
在 Java 10 中,您可以使用匿名类:
boolean result = true;
var objResult = new Object() {
boolean success = result;
};
System.out.println(objResult.success);
您可以将它们用于流:
var names = List.of("John", "Peter", "Olaf");
var namesAndLength = names.stream().map(n -> new Object() {
String name = n;
int length = n.length();
}).collect(toList());
https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
https://developer.oracle.com/java/jdk-10-local-variable-type-inference