谁能解释 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_idbreak 使用的标签。您可以找到更多详细信息 here.