java类无法调用值,Kotlin无法调用到Java中定义的interface类的问题记录
问题产生原因概述
一个kotlin类,调用一个Java类中的一个方法。引发了下面这个错误。
因为我在kotlin中调用了了java代码中定义的一个接口,然后就报错一个IllegalAccessError错误。如下:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: test.juyoufuli.com.myapplication, PID: 19866
java.lang.IllegalAccessError: Interface test.juyoufuli.com.myapplication.app.view.LabelsView$MyChildClickListener implemented by
class test.juyoufuli.com.myapplication.mvp.ui.searchview.SearchViewActivity$onResume$1 is
inaccessible (declaration of 'test.juyoufuli.com.myapplication.mvp.ui.searchview.SearchViewActivity$onResume$1' appears in /data/app/test.juyoufuli.com.myapplication-wPuFy3wI4m1ZSX5n23LKjw==/base.apk)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1173)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2708)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
上述错误主要是说无法到达(inaccessible)该方法。google了一把,确实有人遇到这种问题,下面介绍解决问题方案。
介绍一下各个地方的code
//我在这里调用我定义的方法 (这个方法运营后触发点击事件,直接报错)
lbvSearch!!.setChildClickListener { view, string, position ->
searchHotWord(string)
}
//这么调用也可以(这个直接就报错,完全无法运行。提示如下图)
lbvSearch.setChildClickListener(object : LabelsView.ChildClickListener() {
fun onChildClick(view: View, `object`: Any, position: Int) {
searchHotWord(string)
}
})
//常规的一个点击的接口
interface MyChildClickListener {
/**
* @param view
* @param string
* @param position
* @return
*/
void onChildClick(View view, String string, int position);
}
就是以上一个很常规的调用,但是实际却不能运行。上图的提示也说的比较清楚不能使用MyChildClickListener方法。为什么不能使用呢?
这里联想到以前的一个问题。
在kotlin中使用butterknife的经历(虽然kotlin提供了自己的注解库),如下对比一下。
//java中使用
@BindView(R.id.ll_cash_tab)
LinearLayout llCashTab;
//kotlin中使用,需要添加一个新的注解,注解的意思就说设置这个参数为public的
@JvmField// * Instructs the Kotlin compiler not to generate getters/setters for this property and expose it as a field.
@BindView(R.id.et_search_word)
internal var etSearchWord: EditText? = null
说了这么多是不是突然明白了什么?
其实就说我们的Java中默认的方法和变量默认是protected的修饰,但是kotlin中却无法调用protected修饰的方法。
没错,你只需要在interface前面加上public的修饰符就好了
说了一大堆就为了这一个修饰符,因为对kotlin中的特性了解不充分导致。后续持续中会不断总结记录。
你的鼓励,是我前进的动力。
this all
java类无法调用值,Kotlin无法调用到Java中定义的interface类的问题记录相关推荐
- c++语言程序中,要调用的函数必须在main()函数中定义,惠州学院C++考试复习题
惠州学院C++复习题 一.选择题 1.C++的源文件的扩展名是_____C____. A.h B.obj C.cpp D.exe 2.下列选项能够作为C++变量名的是___C____. A.false ...
- java编译类代码_Java的源代码中定义几个类,编译结果就生成几个以“.class”后缀的字节码。...
[填空题]一个类实现某个接口时必须实现接口中声明的所有方法,否则该类必须定义为(__); [单选题]若有定义int a = 2;则执行完语句a += a -= a * a; 后,a的值是( ) [填空 ...
- java矩形派生正方形_src Step1: 为实验3中定义的矩形类派生一个子类:正方形类 - 下载 - 搜珍网...
Step1: 为实验3中定义的矩形类派生一个子类:正方形类.正方形类的操作同样是求周长和面积.则这个子类除了从父类继承来的方法之外,还需要定义哪些方法?列出正方形类的所有域与方法.编程验证所编写的正方 ...
- 以小组为单位,设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩。
设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩. 实现如下要求的功能: 1.根据姓名查询该学生的总成绩: 2.统计全班 ...
- 【水汐のC#】计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩。实现如下要求的功能:
设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩.实现如下要求的功能: 根据姓名查询该学生的总成绩: 统计全班学生总分的 ...
- 将Frock类声明为抽象类,尺寸在Frock类中定义,在类中声明抽象方法calcArea方法,用来计算衣服的布料面积。
将Frock类声明为抽象类,尺寸在Frock类中定义,在类中声明抽象方法calcArea方法,用来计算衣服的布料面积. 编写Shirt类继承Frock类,实现 calcArea方法,用来计算衬衣所需的 ...
- 【Groovy】闭包 Closure ( 闭包调用 与 call 方法关联 | 接口中定义 call() 方法 | 类中定义 call() 方法 | 代码示例 )
文章目录 总结 一.接口中定义 call() 方法 二.类中定义 call() 方法 三.完整代码示例 总结 在 实例对象后使用 " () " 括号符号 , 表示调用该实例对象的 ...
- java怎么快速创建监听类_java_利用java监听器实现在线人数统计,1.在工程中创建监听类SessionLi - phpStudy...
利用java监听器实现在线人数统计 1.在工程中创建监听类SessionListener 并且实现HttpSessionListener接口,代码如下 import javax.servlet.htt ...
- python 类中定义列表_Python-从类定义中的列表理解访问类变量
小编典典 类范围和列表,集合或字典的理解以及生成器表达式不混合. 为什么:或者,官方用词 在Python 3中,为列表理解赋予了它们自己的适当范围(本地名称空间),以防止其局部变量渗入周围的范围内(即 ...
最新文章
- rotate.js实现图片旋转 (chrome,IE,firefox都可以实现)
- vscode工作区是什么意思_空压机的容积流量和工作压力是什么意思?
- 小程序商店刷榜_APP推广人必看|全球刷榜价格表单
- javascript无提示关闭窗口,兼容IE,Firefox
- python在材料方面的应用_Python数据科学(一)- python与数据科学应用(Ⅰ)
- 求函数:x的n次方(函数递归)
- mesos安装--软件源安装
- 实用经验 92 区分函数模版与模版函数,类模版和模板类
- windows 下命令行查看CPU负载
- java自动转换与强制转换
- Asterisk 是什么?
- 举个栗子~Tableau 技巧(244):用和弦图(Chord diagram)呈现数据关系
- 会声会影2022智能、快速、简单的视频剪辑软件
- 仙气满满的霍尊竟然这么皮?自爆体重已经突破……
- 半年巨亏10亿,水滴烧钱枯竭硬伤难愈
- IDL 初学教程(一)
- 如何白嫖微软云Azure12个月及避坑指南
- 看优酷 Node 重构之路,Serverless SSR 未来可期
- python编译程序输入上网时间并计算上网费用 计算方法_同济大学Python程序设计基础 实验三:选择结构...
- CentOS7安装harbor仓库
热门文章
- Python使用Apriori算法分析导演请某演员后还会请哪个演员
- python批量复制粘贴_用python批量复制特定图片
- 计算机系统一级免费,计算机系统一级ms_office课件第一章.pptx
- 空调万能手机遥控器android版,手机空调万能遥控器
- 计算机二级知识点速记,计算机等考《二级MS+Office高级应用》高频考点速记
- java如何用反射把具体方法抽象_如何在Java 中使用泛型或反射机制对DAO进行抽象...
- java异步处理_Java编程开发好入门吗 消息队列的用途有哪些
- leetcode刷题:除自身以外数组的乘积
- 计算机科学与量子信息处理,量子计算交叉学科
- 先查询后修改并发的时候sql_SQL调优总结