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

330
Vistas
Kotlin no identifica las palabras clave reservadas de Java

Tengo un problema con el uso de palabras clave reservadas de Java en Kotlin. Como no todas las palabras clave reservadas están disponibles en Kotlin, el compilador de Kotlin no puede (¿o no?) detectar las palabras clave reservadas que solo están en Java.

Por ejemplo, tome el ejemplo de default . Es una palabra clave reservada de Java. Eso significa que no puedes hacer lo siguiente.

 public class UserJava { public String default; }

Sin embargo, NO es una palabra clave reservada en Kotlin, por lo que puede usarla de la siguiente manera

 class UserKotlin { var default: String? = null }

Para alguien que no conoce Java, sería difícil saber que son palabras clave reservadas. Como el compilador de Kotlin no le da un error, ni ningún tipo de advertencia de que está usando una palabra clave reservada, puede causar algunos problemas más adelante, que no esperaría.

Uno de los problemas que puede encontrar es durante AnnotationProcessing , que son las bibliotecas que incluye en su gradle con kapt o annotationProcessor . Como Kotlin usa el compilador de Java cuando, por ejemplo, intenta obtener los campos de la clase UserKotlin , obtendrá una lista vacía ya que el compilador de Java NO "entiende" el campo default y lo ignora (¿lo salta?).

El ejemplo de la vida real sería si usa la biblioteca Room y tiene una entidad como la siguiente

 @Entity class User{ @PrimaryKey var id: Int = 0 var default: String? = null }

El procesador de anotaciones de habitaciones generará una consulta de creación de SQLite de

 CREATE TABLE IF NOT EXISTS `User` (`id` INTEGER NOT NULL, PRIMARY KEY(`id`))

Entonces, básicamente omitió el campo default .

¿Hay alguna forma de que Kotlin avise cuando intento usar palabras clave reservadas de Java? ¿O es un error en Kotlin que aún no se ha solucionado? O hay alguna documentación que menciona este problema.

Si conozco Java, es posible que me muestre reticente a usar palabras clave, ya que sé que están reservadas en Java. Pero, ¿qué pasa si no sé Java y no puedo entender cuál es el problema?

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

0

Sinceramente, dudo que este sea un problema dentro de la JVM, pero con la biblioteca de anotaciones. Kotlin no expone la variable default ; lo que es público/expuesto son el getter y el setter. Dicho esto, tal vez la biblioteca de anotaciones esté tratando de acceder al campo privado directamente y termine sin encontrarlo porque es una palabra clave reservada y el compilador de Kotlin puede haberle dado un nombre diferente. ¿La biblioteca no da ninguna advertencia en tiempo de ejecución?

Dicho esto, kotlin planea extenderse a través de javascript/native, y con jvm convirtiéndose en solo parte de su imperio, no creo que tengan planes de agregar las advertencias sugeridas. Supongo que las bibliotecas tendrán que adaptarse a eso o perderán adeptos con el tiempo.

over 4 years ago · Santiago Trujillo Denunciar

0

Android Lint ya tiene una regla opcional "No Hard Kotlin Keywords" que advierte cuando se usan palabras clave de Kotlin en código Java como identificadores, y su guía de interoperabilidad también advierte que no se usen estas palabras clave en código Java.

Lo mismo probablemente podría implementarse fácilmente al revés como una inspección en el propio complemento de Kotlin, idealmente desactivado de forma predeterminada porque la mayoría de las personas no lo necesitarán, pero aún así sería útil en algunos casos. Todavía no he encontrado un problema para esto en YouTrack , pero creo que sería razonable abrir uno.

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