enumeração Enum
conceito
Ele é utilizado para definir um número finito, sob a forma de expressão discretos, muito clara do montante. (O papel de um semelhante a constante estática static final, mas vai integrar)
Enumeração de uso
- Antes não enumerar, definir constantes estáticas necessários para definir estática final, mas o número de um longo tempo, parecer complicado
public static final int VIDEO = 1;//视频
public static final int AUDIO = 2;//音频
public static final int TEXT = 3;//文字
public static final int IMAGE = 4;//图片
- Após a enumeração lá, podemos colocar classes tipo todas as constantes estáticas são enumerados
public enum Enums{
VIDEO,AUDIO,TEXT,IMAGE;
}
// 调用方式 枚举名.常量
Enums.VIDEO;
enum embutido método
-
int compareTo (E e) Compara essa enumeração com o objectivo especificado (a classe de enumeração padrão que não estão dispostos em ordem a partir da esquerda)
-
(Enums.VIDEO) .compareTo ((Enums.AUDIO))
-
-
** Classe getDelcaringClass () ** Volta enum constante tipo Classe objeto correspondente a esta enumeração.
-
<?> Class clazz = (Enums.VIDEO) .getDeclaringClass ();
-
-
** nome String () / toString () ** Retorna o nome desta constante enum, declarou na sua declaração enum.
-
Enums.MONDAY.name () // segunda-feira
Enums.MONDAY.toString () // segunda-feira
-
-
int ordinal () retorna enum ordinal constante
-
Enums.MONDAY.ordinal () // 0
-
-
** t valores estáticos [] () ** devolver todos os valores de enumeração.
-
Enumerações [] = valores Enums.values ();
-
-
** estática <T estende Enum> T valueOf (Classe Enums, nome String) ** Devoluções enum tipo constante enum com o nome especificado.
-
Enumerações d = Enum.valueOf (Enums.class, Enums.MONDAY.name ());
-
Quando há um construtor de classe de enumeração, o construtor padrão Tipo Privado
public enum Enums{
// 枚举有构造参数时
VIDEO(1, "视频"), AUDIO(2, "音频"), TEXT(3, "文本"), IMAGE(4, "图像");
int value;
String name;
Enums(int value,String name){
this.value = value;
this.name = name;
}
// 存在构造器时,如果需要获取构造器中的值,需要让外界有获取方法
public int getValue() {
return value;
}
public String getName() {
return name;
}
}
public static void main(String[] args) {
Enums[] values = Enums.values();
for (Enums value : values) {
System.out.print(value+":");
System.out.println(value.getName());
}
}
VIDEO 视频
AUDIO 音频
TEXT 文本
IMAGE 图像
anotações Anotação
conceito
Descrição do processo. Para o computador para ver
Categoria Função:
- ① documento escrito: um documento gerado pelo código de anotação de geração de documentos de identificação doc [documentação]
- ② análise de código: análise do código, código de anotação usando a reflexão [ID]
- ③ verificação de compilação: por código de anotação identificados para que o compilador pode compilar verificação básica [Substituir]
JDK predefinidos número de notas
- @Override: um método para detectar a anotação marcado se herdada da classe principal (interface)
- @Deprecated: Este conteúdo comentário marcada, expressa obsoleto
- @SuppressWarnings: avisos Suprimir
- @SafeVarargs: Java início 7 apoio, ignorar o aviso de qualquer método ou construtor chamada variável tipo de parâmetro gerados.
- @FunctionalInterface: Java 8 começou a suporte, identificar uma função anônima ou uma interface de função.
- @Repeatable: Java 8 começou a suporte, identificar certas notas pode ser usado várias vezes no mesmo comunicado.
anotação personalizado
-
Essência: anotação é essencialmente uma interface que herda o padrão de anotação de Interface
-
MyAnno interface pública estende java.lang.annotation.Annotation {}
-
Propriedades: métodos de interface abstratas
-
requisitos:
-
atributo Valor de retorno Tipo ter os seguintes valores
- tipos de dados básicos
- Corda
- Enumerar
- comentário
- Mais do que um tipo de matriz
-
A propriedade é definida quando você usa necessidade de dar a atribuição de propriedade
- Se a definição de propriedade, use a palavra-chave padrão para valor de inicialização atributo padrão, quando o uso de anotações, você não pode atribuir atributos.
- Se só a necessidade de atribuir um atributo e um valor do atributo nome, o valor pode ser omitido , valor definido diretamente.
- A atribuição de uma matriz usando pacote {valor}. Se a matriz tem apenas um valor, ele pode ser omitido {}
public @interface MyAnno {
// int show1();
//
// boolean show2();
/*
属性的返回值类型有下列取值
* 基本数据类型
* String
* 枚举
* 注解
* 以上类型的数组
*/
// int age();
// String name();
// String url() default "/*";
// Sex sex() default Sex.Female;
// MyAnno2 anno2();
String[] arr();
String value();//value属性非常特殊,当只有一个属性的时候,可以省略
String url() default "/*";
Sex sex() default Sex.Female;
}
As anotações são usadas para descrever a anotação: a meta-anotação
- @Target: anotação pode descrever o papel da localização
ElementType
valor:ElementType.TYPE
Anotações só pode ser modificado para especificar a classe ou interface - KeyElementType.FIELD
Anotações só pode ser modificado para especificar propriedades de membros - KeyElementType.METHOD
Anotações só pode especificar métodos de modificação - focoElementType.PARAMETER
Notas parâmetro especifica o método só pode ser modificadoElementType.CONSTRUCTOR
Anotações só pode especificar o construtor modificadoElementType.LOCAL_VARIABLE
Anotações só pode ser modificado para especificar variáveis locaisElementType.TYPE_USE
Especificam as anotações podem ser modificados depois de tudo --JDK1.8 têm
- @Retention: Descrição estágio anotações são reservados
RetentionPolicy.SOURCE
informações anotação é mantido no arquivo de origemRetentionPolicy.CLASS
Retida no arquivo de classeRetentionPolicy.RUNTIME
informações anotação permanece na corrida, com o uso de reflexão - Key
@Retention (RetentionPolicy.RUNTIME): anotação sendo descrito, será mantido para os arquivos de classe bytecode, e ler na JVM
- @Documented: Descrição notas se o documento é arrastado para a api
- @Inherited: Descrição notas se herdadas por subclasses
Use anotações no programa
Determinar se existe um comentário
- isAnnotationPresent (Classe)
Obtém o comentário especificado
- getAnnotation (notas .class)
chamada método abstrato valores de propriedade anotação foram configurados
- . Método getAnnotation (Classe) é anotada como: anotação porção modificada (Tipo / Método / Campo) .getAnnotation ( anotada class) .age ();