Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
Método de implementación según el limitador de acceso de objeto anónimo

Cuando un objeto anónimo es public , simplemente se implementa como una devolución de objeto, pero cuando es private , se devuelve como un objeto de conversión de tipos. mira el código de Kotlin a continuación.

 private fun foo() = object { val x: String = "x" } fun bar() = object { val x: String = "x" }

Cuando este código se descompila en Java, cambia así:

 private static final <undefinedtype> foo() { return (<undefinedtype>)(new Object() { @NotNull private final String x = "x"; @NotNull public final String getX() { return this.x; } }); } @NotNull public static final Object bar() { return new Object() { @NotNull private final String x = "x"; @NotNull public final String getX() { return this.x; } }; }

Por lo tanto, cuando intenta usar el código, solo el objeto anónimo private puede acceder a x .

código

Entonces, ¿por qué cada modificador de acceso tiene diferentes implementaciones?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Así es como el lenguaje define la semántica de los objetos anónimos.

El tipo de un objeto anónimo solo se puede usar en el ámbito de declaración, cuando usa el modificador public , el objeto anónimo escapa del ámbito actual y se convierte en Any (supertipo implícito). dado que Any no tiene ninguna propiedad x , no puede acceder a él. por otro lado, cuando usa el modificador private , se asegura de que no escape del alcance actual.

De la especificación del lenguaje Kotlin

La principal diferencia entre una declaración de objeto regular y un objeto anónimo es su tipo. El tipo de un objeto anónimo es un tipo especial que se puede usar (y es visible) solo en el ámbito donde se declara. Es similar a un tipo de declaración de objeto regular, pero, como no se puede usar fuera del alcance de la declaración, tiene algunos efectos interesantes.

Cuando un valor de un tipo de objeto anónimo escapa del alcance actual:

  1. Si el tipo tiene solo un supertipo declarado, implícitamente se reduce a este supertipo declarado;
  2. Si el tipo tiene varios supertipos declarados, debe haber una conversión implícita o explícita a cualquier tipo adecuado visible fuera del ámbito; de lo contrario, se trata de un error en tiempo de compilación.

Nota: en este contexto, "escapar del alcance actual" se realiza inmediatamente si el valor correspondiente se declara como una propiedad global no privada o del alcance del clasificador, ya que son partes de una interfaz accesible externamente.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda