В документации Kotlin пример вызова обобщенной функции выглядит следующим образом:
fun <T> singletonList(item: T): List<T> {
}
val l = singletonList<Int>(1)
Я обнаружил следующий код:
val binding = DataBindingUtil.inflate<FragmentPlantDetailBinding>(
inflater, R.layout.fragment_plant_detail, container, false).apply {
}
}
, и метод inflate выглядитвот так:
public static <T extends ViewDataBinding> T inflate(@NonNull LayoutInflater inflater,
int layoutId, @Nullable ViewGroup parent, boolean attachToParent) {
return inflate(inflater, layoutId, parent, attachToParent, sDefaultComponent);
}
Я думал, что понял, как работает вызов универсальной функции, но во втором примере функция имеет 4 параметра.Так что же означает FragmentPlantDetailBinding?Т даже не используется в методе надувания.Следует отметить, что метод inflate - это код Java, а DataBindingUtil.inflate - код Котлина.Что-то происходит здесь, когда выполняется переход от Kotlin к Java?
В примере документа Kotlin ясно, что <T>
- это тип, который функция использует как для параметра, так и для возвращаемого значения.,Но в этом примере есть только один параметр, так что это очевидно.Но если есть несколько параметров, к чему это относится?