Я смотрел на автоматически сгенерированный код ViewBinding в приложение/сборка/сгенерированный/data_binding_base_class_source_code и видел код функций 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
. Вы можете найти более подробную информацию здесь.