谁能解释 Android ViewBinding 的 bind() 函数优化 Java 代码?
Can anyone explain the Android ViewBinding's bind() function optimized Java code?
我正在查看 app/build/generated/data_binding_base_class_source_code 中自动生成的 ViewBinding 代码,看到了 bind() 函数代码,但我无法理解它。
@NonNull
public static LayoutBindingBinding bind(@NonNull View rootView) {
// The body of this method is generated in a way you would not otherwise write.
// This is done to optimize the compiled bytecode for size and performance.
int id;
missingId: {
id = R.id.text_name;
TextView textName = ViewBindings.findChildViewById(rootView, id);
if (textName == null) {
break missingId;
}
return new LayoutBindingBinding((LinearLayout) rootView, textName);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
这是什么 missingId: {} 块它看起来像 goto + switch。评论已经说没有人会这样写了,但它仍然是一个 Java 语言特性。
谁能向我解释一下这是如何工作的,还有这个功能有名字吗?
我在 Java 方面有一些经验,但主要从事 Kotlin 方面的工作,因此无法在任何地方找到它。
missing_id
是 break
使用的标签。您可以找到更多详细信息 here.
我正在查看 app/build/generated/data_binding_base_class_source_code 中自动生成的 ViewBinding 代码,看到了 bind() 函数代码,但我无法理解它。
@NonNull
public static LayoutBindingBinding bind(@NonNull View rootView) {
// The body of this method is generated in a way you would not otherwise write.
// This is done to optimize the compiled bytecode for size and performance.
int id;
missingId: {
id = R.id.text_name;
TextView textName = ViewBindings.findChildViewById(rootView, id);
if (textName == null) {
break missingId;
}
return new LayoutBindingBinding((LinearLayout) rootView, textName);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
这是什么 missingId: {} 块它看起来像 goto + switch。评论已经说没有人会这样写了,但它仍然是一个 Java 语言特性。
谁能向我解释一下这是如何工作的,还有这个功能有名字吗?
我在 Java 方面有一些经验,但主要从事 Kotlin 方面的工作,因此无法在任何地方找到它。
missing_id
是 break
使用的标签。您可以找到更多详细信息 here.