java转app_从java转kotlin开发APP(二)

1.开发工具 android studio-2.3.3

2.AS将java转换kotlin

要先安装kotlin插件

289df707be95?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

这个是已安装界面,未安装选择Browse Repositories后再搜索安装。

安装之后打开java代码,选中code-convert file java to kotlin file,然后java代码就会自动转化为kotlin代码了

289df707be95?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

泛型相关问题

今天在替换代码的时候遇到了一个泛型问题,原JAVA代码如下

public void upRecycle(RecyclerView recyclerView, LinkedList linkedList) {

try {

if (recyclerView.getAdapter() != null && recyclerView.getAdapter() instanceof MallAdapter) {

MallAdapter mallAdapter = (MallAdapter) recyclerView.getAdapter();

mallAdapter.setmData(linkedList);

mallAdapter.notifyDataSetChanged();

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

MallAdapter类如下

public class MallAdapter extends BaseRecyclerAdapter {

.........

}

也就是说我在初始化和赋值使用的时候都没有申明具体的类型,使用的泛型去占坑了,这也是能用的。

自动转成Kotlin代码的时候成这样了

fun upRecycle(recyclerView: RecyclerView, linkedList: LinkedList) {

try {

if (recyclerView.adapter != null && recyclerView.adapter is MallAdapter) {

val mallAdapter = recyclerView.adapter as MallAdapter

mallAdapter.setmData(linkedList)

mallAdapter.notifyDataSetChanged()

}

} catch (ex: Exception) {

ex.printStackTrace()

}

}

这个时候mallAdapter.setmData(linkedList)是报错的,

报错信息如下

# Out-projected type 'MallAdapter' prohibits the use of 'public open fun setmData(mDate: (Mutable)List!): Unit defined in MallAdapter'

翻译就是禁止使用setmData方法,问题来了,怎么就不能用了,操作一波过后,发现是因为mallAdapter对象没有申明具体的对象,查询一波文档,关于泛型的使用说明如下,嗯,并没有找到关于这个的匹配说明(或是我看不懂都是说的out,in,Any?什么的,怪我)

嗯,解决方法比较简单,那就是在使用的时候声明类型,也就是在强转的*号改成具体类型也就是如下

val mallAdapter = recyclerView.adapter as MallAdapter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值