Как расширить статические поля Java в kotlin

У меня есть файл Java

public class Code { public static final int SUCCESS = 0; public static final int FAIL = 1; } 

Я создал класс kotlin, который расширяет класс Code.

 object ResponseCode : Code() { val SKU_STOCK_NOT_ENOUGH = 2000 } 

Я не могу вызывать оператор ResponseCode.SUCCESS в другой функции Kotlin. Что я могу сделать, чтобы класс kotlin расширил статическое поле класса кода.

В Kotlin, в отличие от Java, статические члены не наследуются подклассами, хотя они могут быть вызваны внутри подкласса без указания имени базового класса.

Для этого случая вы можете вызвать вызов с использованием базового класса. Или:

 object ResponseCode : Code() { val SKU_STOCK_NOT_ENOUGH = 2000 val _SUCCESS = SUCCESS } 

Еще один вариант – объявить метод вместо переменной.

 object ResponseCode : Code() { val SKU_STOCK_NOT_ENOUGH = 2000 fun SUCCESS(): Int { return SUCCESS } } 

нет способа получить статическое поле из java-класса https://kotlinlang.org/docs/reference/java-interop.html#accessing-static-members

единственный путь:

 object ResponseCode : Code() { val SKU_STOCK_NOT_ENOUGH = 2000 fun getSuccess() = SUCCESS fun getFail() = FAIL } 
Intereting Posts