Kotlin: защищенная переменная с открытым сеттером - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в kotlin, и я пытаюсь создать эту ситуацию Java:

protected String aVariable;

public setAVariable(String aValue){
    aVariable = aValue;
}

, если я пытаюсь указать сеттер с другим модификатором, я получаю ошибку.Я также попробовал это:

protected var aVariable: String? = null

fun setAVariable(value: String?){
    aVariable = value
}

, но он говорит мне, что тот же метод уже существует с другим модификатором (он по умолчанию)

Я мог бы изменить только имя метода сеттера, ноЯ хотел бы избежать этого.Есть ли способ сделать это?

1 Ответ

0 голосов
/ 29 ноября 2018

Возможно, вы захотите посмотреть геттеры и сеттеры в справочнике kotlin.

Там вы можете увидеть, как сеттер / геттер можно переопределить или изменить в зависимости от видимости, например:

// public var with private setter:
var demo : String = ""
    private set

Теперь, что касается вашего конкретного случая, когда вы хотите иметь открытый сеттер, но защищенный геттер, вы можете подумать, что будет работать следующее:

private var demo : String = ""
    public set

Но это не работает.Котлин потом жалуется Setter visibility must be the same or less permissive than property visibility.Итак: использование стандартного Kotlin означает, что это невозможно.Конечно, вы можете просто использовать любой другой метод, который будет общедоступным, и просто установить соответствующее свойство, например:

private var demo : String = ""
fun overwriteDemo(s : String) {
  demo = s
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...