Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

337
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda