如何在Kotlin中制作一个双向转换器? (在Java中工作)

我得到这个错误:

错误:(32,50)在类br.com.martinlabs中找不到方法indexFromModel(android.databinding.ObservableList
,br.com.martinlabs.usecase.model.GrupoDoPrincipal) .usecase.viewtools.Converters

但是我在Converters上有这个方法:(我已经尝试了一个类中的伴随对象)

 object Converters { fun indexFromModel(list: ObservableList, model: GrupoDoPrincipal): Int { return list.indexOfFirst { it?.id == model?.id } } @InverseMethod("indexFromModel") fun indexToModel(list: ObservableList, index: Int): GrupoDoPrincipal { return index.let { list[it] } } } 

用法:

  

这个方法适用于Java:

 public static int indexFromModel(ObservableList list, GrupoDoPrincipal model) { for (int i = 0; i < list.size(); i++) { if (list.get(i).getId() == model.getId()) { return i; } } return -1; } @InverseMethod("indexFromModel") public static GrupoDoPrincipal indexToModel(ObservableList list, int index) { return list.get(index); } 

在Kotlin object方法中不是真正的static 。 为了使其成为静态的,你需要为这个方法添加注解@JvmStatic

 object Converters { @JvmStatic fun indexFromModel(list: ObservableList, model: GrupoDoPrincipal): Int { return list.indexOfFirst { it?.id == model?.id } } @JvmStatic @InverseMethod("indexFromModel") fun indexToModel(list: ObservableList, index: Int): GrupoDoPrincipal { return index.let { list[it] } } }