Anotações java em seu aplicativo android

Em Java, elementos que começam com um sinal de arroba (@) são anotações.

No código a seguir, o @Sobrepor anotação lembra Java que o método imediatamente abaixo da anotação tem o mesmo nome e os mesmos tipos de parâmetros como um método na classe pai. O uso do @Sobrepor anotação é opcional. Se você remover todos linhas @Override, o código funciona da mesma maneira.

com.allyourcode.company- pacote

importação java.text.NumberFormat-

importação java.util.Locale-

classe pública FullTimeEmployee estende Employee {

salary- dupla pública

Video: Anotação em Java - Aula 21 - Programação Orientada a Objetos

moeda NumberFormat estática = NumberFormat.getCurrencyInstance (Locale.US) -

FullTimeEmployee pública () {

}

FullTimeEmployee pública (String nome, String jobTitle, double salário) {

this.name = nome-

this.jobTitle = jobTitle-

this.salary = salary-

}

pagamento em dobro pública () {

voltar salary-

}



@Sobrepor

Cordas getPayString pública () {

Nome + retornar “” + currency.format (pay ()) + “ n” -

}

}

Por que usar o @Sobrepor anotação? Imagine sair fora a anotação e inadvertidamente colocar a seguinte getPayString método (e nenhuma outra getPayString declaração de método) no código:

Cordas getPayString público (salário duplo) {

Nome retornar + ", " + Currency.format (salário) + " n"-

}

Você pode pensar que você substituído da classe pai método getPayString, mas você não tem! o Empregado classe de getPayString método não tem parâmetros, e seu novo Empregado em tempo integral classe de getPayString método tem um parâmetro. Estúdio Android olha para essas coisas no editor e diz: “Ok, eu acho que o desenvolvedor está herdando a Empregado parâmetros de classe getPayString método e declarar uma versão adicional de getPayString. Ambos getPayString métodos estão disponíveis no Empregado em tempo integral classe."

Tudo vai bem até que você execute o código. A máquina virtual Java vê a declaração

textView.append (ftEmployee.getPayString ()) -

na atividade principal e chama a parameterless versão de getPayString, qual o Empregado em tempo integral classe herda de seu pai. método que do pai retorna o inútil Pagar não é conhecido mensagem. Na tela do emulador, você vê Ed, não pagam conhecido para o funcionário em tempo integral. Isso não é o que você quer.

Video: ∆Como Fazer Arquivo Jad No Android (2016)#1∆

O problema neste exemplo hipotético não é tanto que você cometer um erro de codificação - todo mundo comete erros como este. O problema é que, sem um anotação, você não pegar o erro até que você está executando o programa. Ou seja, você não vê a mensagem de erro assim que compõem o código no editor Android Studio.

Esperar até tempo de execução pode ser tão indolor quanto dizendo: “Aha! Eu sei por que este programa não funcionar corretamente “Mas esperar até tempo de execução também pode ser bastante doloroso - tão doloroso como dizendo:“. Meu aplicativo foi classificado com 1 em uma escala de 5 por causa deste erro que eu não vi até que um usuário chamado meu mau getPayString método."

Idealmente, Estúdio Android está ciente de sua intenção de substituir um método existente, e pode reclamar com você, enquanto você está olhando para o editor. Se você usar o @Sobrepor anotação em conjunto com a má getPayString método, os sublinhados editor @Sobrepor em vermelho. Quando você passar o mouse sobre a palavra @Sobrepor, você ver esta mensagem. Isso é bom porque você pode corrigir o problema muito antes de o problema aparecer em uma corrida de seu código.

java-programming-for-android-developers-2e-getpaystring
O método getPayString não substituir o método getPayString da classe pai.

Quando o Studio Android cria um para sequenciar método, ele coloca outra anotação - o @NonNull anotação - no topo da declaração de método. Em Java, qualquer variável tipo de referência que não aponta para qualquer coisa tem o valor nulo. Considere os seguintes casos:

  • Se você escrever Corda cumprimento = "Olá", a cumprimento variável aponta para os caracteres codegt; H, E, G, L, O.
  • Se você escrever Corda cumprimento = "", a saudação variável aponta para uma string que não contém caracteres. Não, a corda não tem personagens, mas sim, ainda é uma string. Se você executar

greeting.length ()

você obter o número 0.

  • Se você escrever cumprimento String = nulo, a cumprimento variável não aponta para qualquer coisa. Neste caso, se você executar

greeting.length ()

suas falhas da aplicação e você vê um Null Pointer Exception no painel Logcat do Android Studio.

o @NonNull anotação lembra Android Studio que o valor retornado pelo novo para sequenciar método não deve ser nulo. Se o Studio Android detecta que o método retorna nulo, você vê um pouco de marca amarela ao longo da borda mais à direita do editor. Se você passa o mouse sobre essa marca, você vê um `Nulo` é devolvido pelo método Atenção.


Publicações relacionadas