文章目录
一、枚举:
1.概述:
某些情况下,一个类的对象是有限而且固定的。
手动实现枚举类:
- private 修饰构造器;
- 属性使用private final 修饰;
- 把该类的所有实例都使用 public static final 来修饰;
- 枚举类中每个枚举都是单例模式。
(1)枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 。
(2)当需要定义一组常量时,强烈建议使用枚举类。
(3)如果枚举类中只有一个对象,则可以作为单例模式的实现方式。
2.使用enum定义枚举类:
(1)方式一:jdk5.0之前,自定义枚举类:
(2)方式二:jdk5.0,可以使用enum关键字定义枚举类:
1.提供当前枚举类的对象,多个对象之间用逗号隔开,末尾对象用分号结束。
2.说明:定义的枚举类默认继承于java.lang.Enum类,并实现java.lang.Seriablizable 和 java.lang.Comparable 两个接口。
enum Color
{
RED, GREEN, BLUE;
}
3.实现接口的枚举类:
即:
(1)情况一:实现接口,在Enum类中重写相关方法,此时每个枚举值调用此方法表现出相同的结果。
(2)情况二:对每个枚举值分别实实现相关方法,此时每个枚举值表现出自己所实现的方法。如下代码所示。
interface A{
void test();
}
enum Season implements A{
SUMMER{
@Override
public void test() {
// TODO Auto-generated method stub
}
},
WINTER{
@Override
public void test() {
// TODO Auto-generated method stub
}
};
}
4.枚举类的常用方法:
- values() :返回枚举类中的对象数组。该方法可以很方便地遍历所有的枚举值。
- ordinal():方法可以找到每个枚举常量的索引,就像数组索引一样。
- valueOf(str):返回指定字符串值的枚举对象。要求字符串必须是枚举对象的“名字”。如果不是,会有运行时异常:illegalArgumentException。
- toString():返回当前枚举对象常量的名称。
二、注解(Annotation):
1.概述:
2.基本的注解:
3.自定义注解:
举例:
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 注解
*
*
*/
public class Test3 {
@TestAnn(id=100, desc="姓名")
String name;
}
@Target(ElementType.FIELD) //这个注解类是给其他类的属性做注解;(此处定义的为对属性做注解[FIELD])
@Retention(RetentionPolicy.RUNTIME)//定义注解的声明周期;
@Documented
@interface TestAnn{//注解名称为TestAnn;
public int id() default 0; //注解属性为id(),默认为0
public String desc() default "";//注解属性为desc(),默认为空字符串
}