Я хотел бы предложить два метода с одним и тем же именем, которые могут принимать необязательные или необязательные входные данные:
class Formatter {
fun format(input: Number?) : String? {return number?.toString()}
fun format(input: Number) : String {return number.toString()}
}
Видимо, это невозможно из-за ограничений JVM:
Платформаконфликт объявлений: следующие объявления имеют одинаковую сигнатуру JVM (test (Lorg.example.Number;) Ljava / lang / String;):
Существует ли читаемый обходной путь для достижения той же цели?Мое текущее решение состоит в том, чтобы переименовать один метод (например, formatNonNull (input: Number)).
Бонус: мой класс Formatter фактически написан на Java и выглядит следующим образом:
class Formatter {
@Nullable String format(@Nullable Number input) : String {return number != null ? number.toString(): null;}
}
Itдолжно быть расширено ненулевым вариантом:
@NonNull String formatNonNull(@NonNull Number input) : String {return number.toString();}
Есть ли способ улучшить это, то есть без введения нового имени (например, с расширением kotlin)?