kotlin代码继承java接口/抽象类注意事项

假设java接口为

interface IFoo {
  foo(Integer p);
}

kotlin继承它时,代码为

class FooImpl {
  override fun foo(p: Int?) {
  }
}

注意:即使java中已经用@NotNull注解标明了参数p不可能为null,kotlin中也不能把p的类型从Int?改为Int,因为kotlin编译后Int?会转成Integer,而Int会转成int,两者不一致会造成子类无法自动继承父类的注释(鼠标悬停后不显示)。非primitive类型,例如String,则不会有这个问题,可以按照实际情况在子类声明为可空或不可空

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容