¿Ya funciona el modificador de visibilidad "interno" en Kotlin?

Asumir que un module en Kotlin significa un proyecto (aunque sería bueno ver qué significa la definición exacta de un module de Kotlin … no está claro a partir de los documentos) …

¿Los modificadores de visibilidad de Kotlin funcionan todavía? Tengo dos proyectos, un proyecto principal y un proyecto de testing, con routes de packages diferentes, no superpuestas. El proyecto de testing depende del proyecto principal (en Eclipse). No parece importar si las interfaces o classs en el proyecto principal se marcan como public o no. En el proyecto de testing, las principales interfaces / classs del proyecto son visibile / accessible, no importa qué. La única diferencia aparece si marca los proyectos private principales y luego hay problemas de visibilidad. Pero con o sin public no parece hacer ninguna diferencia.

Por lo que puedo distinguir de los documentos, omitir un modificador de visibilidad en una interfaz o class afecta la visibilidad pnetworkingeterminada, es decir, internal .

En Kotlin actual, el modificador de visibilidad internal se aplica de hecho.

En el anuncio de Kotlin 1.0 Beta RC dice:

Se restringieron las comprobaciones de visibilidad para que, por ejemplo, una statement pública no pueda exponer un tipo local, privado o interno. El acceso a las declaraciones internas se verifica tanto en el comstackdor como en el IDE;

Y las notas de la versión relacionadas tienen dos puntos que respaldan esto:

  • visibilidad interna verificada en el comstackdor
  • Los nombres de las funciones y properties internas están destrozados (interoperabilidad java)

El último punto es crucial para ayudar a evitar que Java vea e interactúe con identificadores internos.

En el anuncio de lanzamiento de Kotlin M14 , también menciona:

  • interno se comtesting en el comstackdor (no solo IDE)
  • los miembros protegidos y internos están prohibidos en las interfaces

Y más atrás en el time, el anuncio de lanzamiento de Kotlin M13 también muestra:

  • El acceso a interno ahora se verifica fuera de un module (detalles a continuación);
  • la visibilidad pnetworkingeterminada (sin modificador) se cambia de interna a pública,
  • finalmente habilitamos los controles que rechazan usos de declaraciones internas fuera de un module.

Entonces claramente es funcional y funciona.

Una cosa que vale la pena tener en count es que funciona solo para los modules de Kotlin, pero aún es posible acceder a la statement "interna" de los modules de Java, aunque muestra un informe de inspección (advertencia).

https://youtrack.jetbrains.com/issue/KT-19053

  • IntArray vs Array <Int> en Kotlin
  • Kotlin cuádruple, quíntuple, etc. para desestructurar
  • Usando una constante de Java en un parámetro de anotación de Kotlin
  • ¿Existe alguna forma clara de utilizar los methods de extensión de Groovy en Kotlin?
  • ¿Cómo llamar al método Kotlin con más de una firma similar con lambda?
  • Agregar un interceptor a un cliente okHttp3 ya construido
  • Función de object compañera burlona en kotlin
  • Campos públicos para compatibilidad con Java
  • Cómo hacer un bucle multicondicional para kotlin
  • Fragmentos en las actividades comportamiento extraño
  • ¿Cómo puedo fusionar una sola <Lista <Lista <T >>> en una Lista <T> con RxJava 2?