Kotlin: mutable propiedad privada con sólo el captador

Dmytro Titov:

Estoy muy nuevo en Kotlin y tratando de migrar un proyecto de Java a ella. Estoy un poco confundido con propiedades de Kotlin y getters / setters para ellos junto con el alcance de visibilidad.

Lo que quiero lograr es:

public class Foo {

    private int number;

    public int getNumber() {
        return number;
    }

    public void increment() {
        number++;
    }

}

Así que, básicamente, lo que necesito para crear una clase con una propiedad privada number. Esta propiedad debe ser accesible por el público comprador, pero no debería tener un colocador. Además, esta propiedad debe ser internamente mutable, por lo que su valor se puede cambiar usando algún método como increment().

Por lo que yo entiendo, no se puede declarar como val, porque en ese caso, sería completamente inmutable, incluso desde dentro de la instancia de una clase, así que no puedo incrementarlo. Parece que debería ser var. Pero entonces yo no veo una opción para hacer que la propiedad en sí sea privatey el captador de esta propiedad de ser public, porque parece que las propiedades y sus getters / setters debe tener el mismo alcance la visibilidad ...

Roland:

Si utiliza Intellij usted podría pegar el código en una clase Kotlin y habría recibido la siguiente:

class Foo {

  var number: Int = 0
    private set

  fun increment() {
    number++
  }
}

Y esto básicamente es también la respuesta a su problema ...

private setdice que el colocador sólo es visible de forma privada. Para que pueda acceder a ella dentro Foo, pero no desde fuera. El 0se establece explícitamente (en contraste con Java). Entonces: Por defecto, la propiedad y las funciones son public.

Compruebe también las propiedades de referencia con respecto a Kotlin (específicamente getter / setter)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=119805&siteId=1
Recomendado
Clasificación