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á.