Kotlin与Java的共存-kotlin调用java代码
来源:互联网 发布:淘宝网集市消保卖家 编辑:程序博客网 时间:2024/06/05 08:25
- kotlin调用javabean数据实体类
- kotlin的空安全问题
- 空安全限定不能为NULL
- kotlin和java中泛型的差异问题
- SAMConversion在kotlin中调用java的坑
kotlin调用javabean数据实体类
javabean实体类
public class DataClass { private int id; public int getId() { return id; } public void setId(int id) { this.id = id; }}
kotlin中的调用赋值:
fun main(args: Array<String>) { val data=DataClass() data.id=1//直接把java中的getset方法转换成了kotlin中的属性 println(data.id)// 结果:1}
kotlin的空安全问题
java中返回值为null的方法
public class NullSafetyJava { public String getData(){ return null; }}
kotlin代码的调用
fun main(args: Array<String>) { val nullSafety=NullSafetyJava() val data=nullSafety.data println(data)// 结果:null val data1:String=nullSafety.data println(data1)// 此时限定了data必须是String类型,不能为null,此处就会报错}
空安全限定不能为NULL
Java代码
import com.sun.istack.internal.NotNull;import java.text.SimpleDateFormat;import java.util.Date;public abstract class NullSafetyAbsClass { public abstract String formate(Date date); public @NotNull String formatTime(@NotNull Date date) {//注解表示传入的date参数一定不能为null return new SimpleDateFormat("HH:mm:dd").format(date); }}
kotlin代码
import java.util.*class NullSafetySubClass : NullSafetyAbsClass() { override fun formate(date: Date?): String { return date.toString() }}fun main(args: Array<String>) { val nullSafetySubClass = NullSafetySubClass() println(nullSafetySubClass.formate(Date())) println(nullSafetySubClass.formatTime(Date())) /** * 结果: * Thu Dec 07 12:03:31 GMT+08:00 2017 12:03:07 */}
kotlin和java中泛型的差异问题
java代码
import java.util.ArrayList;import java.util.List;public class Generics { // 安卓中的MVP的绑定,kotlin中写不出这样的代码 public abstract class View<P extends Presenter> { P presenter; } public abstract class Presenter<V extends View> { V view; } public static void main(String[] args) { List list = new ArrayList();//这里可以不用传泛型 list.add("Java"); list.add(12); for (Object o : list) { System.out.println(o); } }// 结果:// Java// 12}
kotlin中泛型的格式
fun main(args: Array<String>) { val list=ArrayList<Any>()//此处泛型不能为空,any表示Object list.add("Java") list.add(34) list.map (::println) /** * 结果: * Java 34 */}
SAMConversion在kotlin中调用java的坑
java代码
import java.util.ArrayList;public class SAMInJava { private ArrayList<Runnable> runnables=new ArrayList<>(); public void addTask(Runnable runnable){ runnables.add(runnable); System.out.println("After add: "+runnable+" we have "+runnables.size()+" in all."); } public void removeTask(Runnable runnable){ runnables.remove(runnable); System.out.println("After remove: "+runnable+" only "+runnables.size()+" left."); }}
kotlin代码的使用
import java.util.concurrent.Executorsfun main(args: Array<String>) { val worker= Executors.newCachedThreadPool() worker.execute { println("hello,线程池") } val samInJava=SAMInJava() val lanaba={ println("hello") } //每次传的lanaba都会在java中被转换(conversion)成Runable接口的实例,每个地址都不一样 samInJava.addTask(lanaba) samInJava.addTask(lanaba) samInJava.addTask(lanaba) samInJava.addTask(lanaba) samInJava.addTask(lanaba) samInJava.removeTask(lanaba) samInJava.removeTask(lanaba) samInJava.removeTask(lanaba) samInJava.removeTask(lanaba) samInJava.removeTask(lanaba) /** * 结果,并没有移除 */// After add: SAMConversionKt$sam$Runnable$28f07624@548a9f61 we have 1 in all.// After add: SAMConversionKt$sam$Runnable$28f07624@1753acfe we have 2 in all.// After add: SAMConversionKt$sam$Runnable$28f07624@7c16905e we have 3 in all.// After add: SAMConversionKt$sam$Runnable$28f07624@2a2d45ba we have 4 in all.// After add: SAMConversionKt$sam$Runnable$28f07624@2a5ca609 we have 5 in all.// After remove: SAMConversionKt$sam$Runnable$28f07624@20e2cbe0 only 5 left.// After remove: SAMConversionKt$sam$Runnable$28f07624@68be2bc2 only 5 left.// After remove: SAMConversionKt$sam$Runnable$28f07624@28feb3fa only 5 left.// After remove: SAMConversionKt$sam$Runnable$28f07624@675d3402 only 5 left.// After remove: SAMConversionKt$sam$Runnable$28f07624@51565ec2 only 5 left.}
阅读全文
0 0
- Kotlin与Java的共存-Java中调用kotlin代码
- Kotlin与Java的共存-kotlin调用java代码
- Kotlin-Kotlin中调用Java
- Kotlin-Java中调用Kotlin
- android kotlin与Java互操作(一)在 Kotlin 中调用 Java 代码
- 《Kotlin 程序设计》第九章 Kotlin与Java混合调用
- android项目中,java调用kotlin代码
- Android开发,Kotlin的了解与学习(八)-----kotlin与java的互相调用
- kotlin调用java
- java调用kotlin注意事项
- Kotlin-39.kotlin调用Java之一(Call Java from Kotlin)
- Kotlin-43.Java调用kotlin之一(Call Kotlin from Java)
- Kotlin的互操作——Kotlin与Java互相调用
- kotlin汇总10-Java调用kotlin
- Kotlin基础教程-在kotlin中调用Java
- Kotlin基础教程-在Java中调用Kotlin
- Kotlin笔记(二) : Kotlin与Java对比
- 【Kotlin】Kotlin与Java反射实践
- opencv摄像头
- Retrofit2+Rxjava2如何主动取消网络请求
- gradle-x.x-all.zip各个版本的离线包集合
- Pyspark安装及问题
- 图像亮度、对比度 算法--cg
- Kotlin与Java的共存-kotlin调用java代码
- 实现顺序查找的算法
- Retrofit + RxJava+RxAndroid
- Python小练习(2)
- java线程作业1
- mysql replace into
- 微信JS-SDK调用微信接口方法说明
- 操作系统基础训练十问十答
- Qt移植以及QT creator一键调试