Kotlin无法识别Android可为空的注释

时间:2019-04-26 08:29:03

标签: android kotlin annotations

Android源代码建议findViewById可以返回null:

@Nullable
public final <T extends View> T findViewById(@IdRes int id) {
    if (id == NO_ID) {
        return null;
    }
    return findViewTraversal(id);
}

但是当从Kotlin调用它时,编译器不会抱怨使用这种方式的可空性:

private lateinit var swipeRefreshLayout: SwipeRefreshLayout
...
swipeRefreshLayout = view.findViewById(R.id.swiperefresh)

正如我所猜测的那样,这个Nullable注释来自android pacakge,还有其他Nullable注释,Kotlin确实能很好地识别它。是Kotlin / IDE相关问题,还是Android团队应该对此做些事情?

1 个答案:

答案 0 :(得分:0)

findViewById使用泛型。我们明确提供了它应该返回的类型。如果我们重写init行,编译器将抱怨可空性。

swipeRefreshLayout = view.findViewById<SwipeRefreshLayout?>(R.id.swiperefresh)