Если у меня есть интерфейс в Kotlin:
interface KotlinInterface {
val id: String
}
, я могу реализовать его так:
class MyClass : KotlinInterface {
override val id: String = "id"
}
Однако, если бы я использовал интерфейс Java например:
public interface JavaInterface {
String id = "id";
}
Я не могу переопределить переменную класса id
аналогичным образом:
class MyClass : JavaInterface {
override val myId: String = JavaInterface.id //linter says: 'myId' overrides nothing
}
Я также не могу использовать id
в другом месте, несмотря на то, что он имеет предопределенный значение:
class MyClass : JavaInterface {
val myArray: Array<String> = arrayOf(id) // linter would say that id is not defined rather than recognising it as the string “id”
}
Похоже, я должен использовать это так:
class MyClass {
val id: String = JavaInterface.id
val myArray: Array<String> = arrayOf(id)
}
Может ли кто-нибудь объяснить эту разницу в поведении и указать на то, что я могу неправильно понять?