我有以下课程:
class CountryDataItem (
id: Long?,
private val countryName :String?,
private var countryFlagUrl : String?,
var gameCount : Int,
var liveCount:Int
) : BaseDataItem(id) {
companion object {
fun onCreateViewHolder(
parent: ViewGroup,
onRecyclerItemClickListener: OnRecyclerItemClickListener?
): RecyclerView.ViewHolder {
val view: View =
LayoutInflater.from(parent.context).inflate(R.layout.country_item, parent, false);
}
}
}
但在跑步时:
someKClass.java.getMethod(
"onCreateViewHolder",
parent.javaClass,
onRecyclerItemClickListenerRef.get()?.javaClass
)
我有个例外。我不明白为什么我甚至使用方法:getmethods来获得一个包含类中所有方法的名称的列表,并且该方法存在。这意味着我发送了一个错误的参数(但无法找出什么是错误的)附件列表:
附加信息:我发送给getmethod的第二个参数是一个weakreference,它在他内部隐藏了一个allscoresfragment类型的示例,并且还实现了RecyclerItemClickListener上的接口,但是当我运行getmethod方法时:
onRecyclerItemClickListenerRef.get()?.javaClass
,结果是allscoresfragment类型,而不是onrecycleritemclicklistener类型。因此,他找不到方法并抛出异常。尝试在发送对象之前强制转换该对象:val castedvariable= onRecyclerItemClickListenerRef.get() as? OnRecyclerItemClickListener
然后发送为:
castedVariable.javaClass
没用。也许有人能给我一个解决问题的办法?
1条答案
按热度按时间cuxqih211#
在kotlin类中创建一个伴随对象相当于在java类中创建一个静态final类。因此,在companion对象中定义的方法并不等同于java类中的静态方法,并且不能像您所尝试的那样进行访问。试试这个:
如果找不到导入,请添加kotlin反射库。