O que é a sintaxe para elementos do tipo de anotação?

Aaron:

Como faço para ler / compreender a seguinte declaração em Java?

Class<?>[] groups() default {};

Class < ? extends Payload>[] payload() default {};

Eu acho que eu posso entendê-los individualmente, mas eu não sei se eu ficar bom senso do que significa na sua totalidade.

Individualmente:

  1. Class<?>significa qualquer classe e Class< ? extends Payload>qualquer classe, que se estende a Payloadclasse
  2. [ ]parece referir-se a qualquer variedade de classes. Isso está correto?
  3. groups()e payload()são nomes de métodos.
  4. default{} Utilize esta opção quando não há nenhuma implementação?

Eu não sou realmente certo como entender as afirmações acima? qualquer ajuda seria muito bem vinda.

flocos:

padrão {} -> Use isto quando não há nenhuma implementação?

Em uma definição de anotação você pode especificar um valor padrão para um parâmetro. O {}padrão depois é um literal matriz para uma matriz vazia. Você também pode configurá-lo para algum valor não vazio. Isso também funciona para outros objetos também. por exemplo, a Dataanotação do Lombok, onde uma seqüência padrão é declarado:

public @interface Data {
    String staticConstructor() default "";
}

Classe significa qualquer classe e "Class <? Estende Payload>" significa qualquer classe que estende a classe Payload

sim

[] -> parece referir-se a qualquer variedade de classes. Isso está correto?

sim

grupos () e a carga útil () são nomes de métodos.

Eles são o nome do parâmetro utilizado na declaração de anotação, bem como o nome dos métodos getter para esses valores. por exemplo, você pode definir:

@Data(staticConstructor = "of") class Foobar {}

E mais tarde você poderia obter o valor usando o método getter criados:

Data dataAnnotation = Foobar.class.getAnnotation(Data.class);
String staticConstructor = dataAnnotation.staticConstructor();

Nota que você não vai realmente ser capaz de recuperar o valor para uma anotação em tempo de execução, a menos que a definição anotação também é anotado com @Retention(RetentionPolicy.RUNTIME)

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=173704&siteId=1
Recomendado
Clasificación