谁能解释一下Android ViewBinding的bind()函数优化的Java代码?



我在app/build/engenerated/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+开关。评论已经说没有人会这样写,但它仍然是Java语言的一个特性。

有人能解释一下这个功能是如何工作的吗?这个功能有名字吗?

我在Java方面有一些经验,但主要从事Kotlin的工作,所以在任何地方都找不到它。

missing_idbreak使用的标签。您可以在此处找到更多详细信息。

最新更新