Anotações java em seu aplicativo android
Em Java, elementos que começam com um sinal de arroba (@) são anotações.
Conteúdo
@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.
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á"
, acumprimento
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
, acumprimento
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.