之前一直没写过Enum。。今天看到系统后台代码,很多的泛型和枚举。。都有些看不懂。
下面写了个小例子,比如Animal对象,枚举一个dog后就得到一个dog对象。
public class Animal {
private String name;
private int age;
public Animal(String name){
this.name = name;
this.age = 111;
}
//略了getter和setter
}
枚举类:
public enum AnimalEnum{
DOG(new Animal("DOG")),//DOG就是一个AnimalEnum对象
CAT(new Animal("CAT"));
private final Animal animal;
private AnimalEnum(Animal animal){
this.animal = animal;
}
public Animal getAnimal(){//得到DOG的私有变量animal
return animal;
}
}
测试:
public class TestMain {
public static void main(String[] args){
System.out.println(AnimalEnum.DOG.getAnimal().getAge());
}
}
抄一点。。:http://www.cnblogs.com/hemingwang0902/archive/2011/12/29/2306263.html#title-7
可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。
接下来是泛型,我觉得泛型就是把类也作为参数传到了类中,下面是一个泛型的小例子。
public class GenericClass<C,PK extends Serializable> {
private C entity;
private PK primaryKey;
public GenericClass(C c,PK id){
entity = c;
primaryKey = id;
}
public void print(){
System.out.println("id = "+primaryKey+"; entity="+entity);
}
}
一个entity1类
public class Entity1 {
public String toString() {
return "entity";
}
}
运行测试:
public class TestMain {
public static void main(String[] args) {
GenericClass gc = new GenericClass<Entity1, Integer>(new Entity1(), 1);
gc.print();
}
}
打印结果:
id = 1; entity=entity