java和kotlin之间的参数有效可见性冲突

我试图重写bindView函数:

 import com.mikepenz.materialdrawer.model.PrimaryDrawerItem open class SpinnerDrawerItem() : PrimaryDrawerItem(), View.OnClickListener { override fun bindView(viewHolder: ViewHolder?) { super.bindView(viewHolder) // Do things } } 

从PrimaryDrawerItem,但我得到:

在这里输入图像描述

为什么?

PrimaryDrawerItem.ViewHolder protectedbindView()方法是public ,它接受PrimaryDrawerItem.ViewHolder 。 但是一般的外部调用者不能调用这个方法,因为它不能引用protected嵌套类PrimaryDrawerItem.ViewHolder 。 Kotlin禁止这种行为,并要求或者使参数可见性等于方法可见性,或者要求将参数可见性减小或等于方法可见性。

在你的情况下,你必须使PrimaryDrawerItem.ViewHolder public或保护PrimaryDrawerItem.bindView()