Lombok: ¿No debería protegida emisores de no ser accesible por los no subclases?

Parth Shah:

Soy nuevo en Lombok y confundido por qué el código siguiente se compila sin ningún error. Desde que he especificado el Setter tener AccessLevel.PROTECTED, ¿no debería haber algún tipo de errores de compilación?

AnotherClass.java

@NoArgsConstructor
@AllArgsConstructor
public class AnotherClass {

    @Getter @Setter
    private int width;

    @Getter(AccessLevel.PUBLIC) @Setter(AccessLevel.PROTECTED)
    private int height;

    @Getter @Setter @NonNull
    private String name;
}

Main.java

public static void main(String[] args) {
    AnotherClass instance1 = new AnotherClass(2, 1, "instance1");
    System.out.println("Fetching height of instance1: " + instance1.getHeight());
    instance1.setHeight(3);
    System.out.println("Fetching height of instance1: " + instance1.getHeight());
}

salida:

Fetching height of instance1: 1
Fetching height of instance1: 3
rzwitserloot:

Se puede utilizar delombokpara comprobar que los emisores generados son de hecho 'protegidos'. A medida que los comentarios indican, los niveles de acceso de Java es una ascensión estricta; todos los niveles más permisiva incluye todos los accesos 'abajo' ella. Así:

  • private = Más o menos: Todo el código en este archivo.
  • nada (Programa privado) = Todas private+ todo el código fuente en el mismo paquete.
  • protected= Todas las anteriores subclases +, incluso en otro paquete.
  • public = Todo.

Exención de responsabilidad: yo soy un desarrollador de Lombok.

Supongo que te gusta

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