调用不';不接受来自kotlin的null

调用不';不接受来自kotlin的null,kotlin,nullable,Kotlin,Nullable,IDEA社区2017.1.2,JRE 1.8,Kotlin 1.1.2-2 我有一些Java方法,位于libGdx中,没有任何关于其可空性的注释,例如: public void render (final RenderableProvider renderableProvider) { renderableProvider.getRenderables(renderables, renderablesPool); 正如我们所看到的,参数不能为null。但是,因为没有任何东西表明它不是nul

IDEA社区2017.1.2,JRE 1.8,Kotlin 1.1.2-2

我有一些Java方法,位于libGdx中,没有任何关于其可空性的注释,例如:

public void render (final RenderableProvider renderableProvider) {
  renderableProvider.getRenderables(renderables, renderablesPool);
正如我们所看到的,参数不能为null。但是,因为没有任何东西表明它不是null参数,所以Kotlin很乐意在
RenderableProvider?
中传递null。如何让Kotlin在编译时检查我应该传递的是
RenderableProvider
,而不是
RenderableProvider?

我已经读过,但是没有“指定自定义Kotlin签名”,如果我将
renderableProvider
注释为
@NotNull
没有任何更改,Kotlin仍然允许null


我甚至试着用XML中的
javax.annotation.Nonnull
手动替换
org.jetbrains.annotations.NotNull
,但这没有什么区别——代码编译和使用NPE崩溃。

外部注释是无效的。不幸的是,您必须使用fork libgdx并对其中的方法进行注释,否则将无法解决此问题。

您可以将其包装在扩展函数中,然后仅将其用于渲染:

fun RenderClass.renderSafe(renderProvider: RenderableProvider) = 
    this.render(renderProvider)
现在您不能传递
null