Вызов java-кода, который не принимает значение null от kotlin

Сообщество IDEA 2017.1.2, JRE 1.8, Kotlin 1.1.2-2

У меня есть методы Java, расположенные в libGdx, у которых нет никаких комментариев относительно их недействительности, например:

public void render (final RenderableProvider renderableProvider) { renderableProvider.getRenderables(renderables, renderablesPool); 

как мы видим, аргумент не может быть нулевым. Однако, поскольку ничего не говорит о том, что это не-нулевой аргумент, Kotlin с радостью передаст null в RenderableProvider? , Как сообщить Kotlin проверить во время компиляции, что мне нужно передать RenderableProvider а не RenderableProvider? ?

Я читал о внешних аннотациях , однако нет «Укажите пользовательскую подпись @NotNull », и если я аннотирую renderableProvider как @NotNull ничего не меняется – kotlin все еще допускает null.

Я даже пытался заменить org.jetbrains.annotations.NotNull с javax.annotation.Nonnull в XML вручную, но это не имеет значения – компиляция кода и сбои с NPE.

Внешние аннотации больше не поддерживаются . К сожалению, вам придется либо форк libgdx, либо комментировать методы или жить с этой проблемой.

Вы можете обернуть его в функцию расширения, а затем использовать только для рендеринга:

 fun RenderClass.renderSafe(renderProvider: RenderableProvider) = this.render(renderProvider) 

Теперь вы не можете передать null .