Guia para Kotlin @JvmField

Guia para Kotlin @JvmField

1. Visão geral

Neste tutorial, vamos explorar a anotação@JvmField deKotlin.

O Kotlin tem sua abordagem para classes e propriedades, que difere da abordagem usada em Java. A anotação@JvmField possibilita a compatibilidade entre os dois idiomas.

2. Declaração de campo

Por padrão, as classes Kotlin não expõem campos, mas propriedades.

O idioma fornece automaticamente os campos de apoio às propriedades que armazenam seu valor na forma de um campo:

class CompanionSample {
    var quantity = 0
    set(value) {
        if(value >= 0) field = value
    }
}

Este é um exemplo simples, mas usando o descompilador de Kotlin no IntelliJ (Ferramentas> Kotlin> Mostrar descompilador de Kotlin), ele nos mostrará como seria em Java:

public class JvmSample {
   private int quantity;

   // custom getter

   public final void setQuantity(int value) {
      if (value >= 0) {
         this.quantity = value;
      }
   }
}

No entanto, isso não significa que não possamos ter campos, existem certos cenários, onde é necessário. Nesse caso, podemos aproveitar a anotação@JvmField, que instrui o compilador a não gerar getters e setters para a propriedade e expô-lo como um campo Java simples.

Vamos dar uma olhada no exemplo de Kotlin:

class KotlinJvmSample {
    @JvmField
    val example = "Hello!"
}

E sua contraparte descompilada em Java - o que, de fato, prova que o campo foi exposto da maneira Java padrão:

public class KotlinJvmSample {
    @NotNull
    public final String example = "Hello!";
}

3. Variáveis ​​estáticas

Outra instância em que a anotação é útil é sempre que uma propriedade declarada em um objeto de nome ou objeto complementar possui um campo de apoio estático:

public class Sample {
    public static final int MAX_LIMIT = 20;
}
class Sample {
    companion object {
        @JvmField val MAX_LIMIT = 20
    }
}

4. Exceções de uso

Até agora, discutimos situações em que podemos usar a anotação, mas existem algumas restrições.

Aqui estão algumas situações em que não podemos usar a anotação:

  • Propriedades particulares

  • Propriedades com modificadoresopen,override,const

  • Propriedades delegadas

5. Conclusão

Neste artigo rápido, exploramos as diferentes maneiras de usar a anotação@JvmField de Kotlin.

A implementação de todos esses exemplos e trechos de código pode ser encontrada emGitHub project - este é um projeto Maven, portanto, deve ser fácil de importar e executar como está.