Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hl=zh-cn

一、Java(供 Kotlin 使用)

1、不得使用硬关键字

不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识符。

  • 硬关键字
    as、as?、break、class、continue、do、else、 false、for、fun、if、in、!in、interface、is、!is、null、object、package、super、this、throw、true、typealias、typeof、val、var、when、while。

  • 软关键字、修饰符关键字和特殊标识符
    https://kotlinlang.org/docs/keyword-reference.html#hard-keywords

2、避免使用 Any 的扩展函数或属性的名称

3、可为 null 性注释

  • 公共 API 中的每个非基础参数类型、返回类型和字段类型都应 具有可为 null 性注解。
  • 未加注解的类型会被解释为 “平台”类型,这些类型是否可为 null 性不明确。

4、Lambda 参数位于最后

  • 符合 SAM 转换条件的参数类型应位于最后。例如,RxJava 2 的 Flowable.create() 方法签名定义为:
	public static <T> Flowable<T> create(
	    FlowableOnSubscribe<T> source,
	    BackpressureStrategy mode) {
   
    /* … */ }
	
	// 在 kotlin 中调用时显示为
	Flowable.create({
   
    /* … */ }, BackpressureStrategy.LATEST)
  • 如果方法签名中的参数颠倒顺序,则函数会调用 可以使用尾随 lambda 语法:
	public static <T> Flowable<T> create(
	    BackpressureStrategy mode,
	    FlowableOnSubscribe<T> source) {
   
    /* … */ }
	
	// 在 kotlin 中调用时显示为
	Flowable.create(BackpressureStrategy.LATEST) {
   
    /* … */ }

5、属性前缀

  • 对于在 Kotlin 中要表示为属性的方法,需要严格的**“bean”样式** 前缀。
  • 访问器方法需要 get 前缀;对于布尔值返回方法,则为 is 前缀。
  • 更改器方法需要 set 前缀
  • 如果希望方法作为属性公开,请不要使用非标准前缀,例如 has、set 或无 get 前缀的访问器。带有非标准前缀的方法 也可作为函数进行调用,具体取决于 方法的行为。
	public final class User {
   
   
		public String getName() {
   
    /* … */ }
		public void setName(String name) {
   
    /* … */ }
		public boolean isActive() {
   
    /* … */ }
		public void setActive(boolean active) {
   
    /* … */ }
	}
	
	// 对应的 kotlin 代码
	val name = user.name // Invokes user.getName()
	val active = user.isActive // Invokes user.isActive()
	user.name = "Bob" // Invokes user.setName(String)
	user.isActive = true // Invokes user.setActive(boolean)

6、运算符过载

  • 允许特殊调用点语法。
	public final class IntBox {
   
   
		private final int value;
		public IntBox(int value) {
   
   
			this.value = value;
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值