枚举:
老师给我们讲过一句话,枚举类型的作用就是使程序更加接近自然语言。
在java1.5之前都是将常量设置为final static类型,在java1.5之后,出现了枚举类型,通常将常量设置为枚举常量。
1 //定义一个枚举 2 public enum Sex { 3 FEMALE,MALE; 4 } 5 //定义学生类,学生类性别用枚举类型 6 public class Student { 7 private String name; 8 //定义枚举类型变量 9 private Sex sex; 10 public String getName() { 11 return name; 12 } 13 public void setName(String name) { 14 this.name = name; 15 } 16 public Sex getSex() { 17 return sex; 18 } 19 public void setSex(Sex sex) { 20 this.sex = sex; 21 } 22 } 23 //调用枚举变量 24 public class Test { 25 26 public static void main(String[] args) { 27 Student zhangsan = new Student(); 28 //为性别赋值,性别值必须为枚举常量,若赋其他值则报错。 29 zhangsan.setSex(Sex.FEMALE); 30 } 31 }
泛型:
泛型的出现时为了解决多态中向上转型和向下转型出现的错误。一般情况下向上转型不会出现错误,但是向下转型如果忘记而忽略就会出现异常,这个异常在编译时是不会出现的,但是在运行时则会出现ClassCastException异常。
1 类名<T> 2 类名<T, E extends F>
1 //定义宠物类 2 public class Pet { 3 } 4 //定义猫类继承宠物类 5 public class Cat extends Pet{ 6 } 7 //定义狗类继承宠物类 8 public class Dog extends Pet { 9 } 10 //定义男士衣服 11 public class ManCloth { 12 } 13 //定义女士衣服 14 public class WomanColth { 15 } 16 //定义学生类 17 public class Student<T, E extends Pet> { 18 private String name; 19 //定义衣服类型为泛型。 20 private T cloth; 21 //定义宠物类型为泛型,泛型继承宠物 22 private E pet; 23 public String getName() { 24 return name; 25 } 26 public void setName(String name) { 27 this.name = name; 28 } 29 public T getCloth() { 30 return cloth; 31 } 32 public void setCloth(T cloth) { 33 this.cloth = cloth; 34 } 35 public E getPet() { 36 return pet; 37 } 38 public void setPet(E pet) { 39 this.pet = pet; 40 } 41 } 42 //测试类 43 public class TestGeneric { 44 public static void main(String[] args){ 45 Student<ManCloth, Dog> stu = new Student(); 46 47 Dog dog = stu.getPet(); 48 ManCloth clth = stu.getCloth(); 49 } 50 }