Как отключить аннотации @ NonNull / @ Nullable в сгенерированном Kotlin Java-коде - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужно отключить @NonNull/@Nullable аннотации в сгенерированном Kotlin Java-коде, потому что некоторые адаптеры аннотаций (генераторы кода) не могут правильно обрабатывать некоторые аннотированные поля

Вы знаете, как это можно сделать? Некоторая директива аннотации или компилятора Kotlin

Проблема: класс котлин:

open class TestModel(
    var test: ByteArray = ByteArray(0)

)

сгенерированный Java:

public class TestModel {
@org.jetbrains.annotations.NotNull()
private byte[] test;

@org.jetbrains.annotations.NotNull()
public final byte[] getTest() {
    return null;
}

public final void setTest(@org.jetbrains.annotations.NotNull()
byte[] p0) {
}

public TestModel(@org.jetbrains.annotations.NotNull()
byte[] test) {
    super();
}

public TestModel() {
    super();
}
}

Я хочу удалить: @org.jetbrains.annotations.NotNull() аннотация

1 Ответ

0 голосов
/ 07 сентября 2018

Вы не можете. Инструмент сгенерированного кода Java показывает, как выглядит код Java для класса. В результате он будет включать @Nullable и @NotNull; они являются основной частью языка. Они здесь, чтобы справиться с нулевой безопасностью.

val x: String - это то же самое, что и @NotNull public String x (требуется правильная инициализация и точки с запятой, но вы понимаете). Вы не можете удалить их автоматически из скомпилированного кода, если не напишите свой собственный компилятор (но это было бы настоящей болью).

Если у вас есть проблемы из-за аннотаций, просто используйте Java. Аннотации туда не добавляются, и у вас не возникнет никаких проблем. Вам нужно было бы смешивать языки, но он разработан для этого, так что у вас все должно быть в порядке.

...