假设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,则不会有这个问题,可以按照实际情况在子类声明为可空或不可空
网友评论