枚举:
老师给我们讲过一句话,枚举类型的作用就是使程序更加接近自然语言。
在java1.5之前都是将常量设置为final static类型,在java1.5之后,出现了枚举类型,通常将常量设置为枚举常量。
//定义一个枚举
public enum Sex {
FEMALE,MALE;
}
//定义学生类,学生类性别用枚举类型
public class Student {
private String name;
//定义枚举类型变量
private Sex sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
}
//调用枚举变量
public class Test {
public static void main(String[] args) {
Student zhangsan = new Student();
//为性别赋值,性别值必须为枚举常量,若赋其他值则报错。
zhangsan.setSex(Sex.FEMALE);
}
}
泛型:
泛型的出现时为了解决多态中向上转型和向下转型出现的错误。一般情况下向上转型不会出现错误,但是向下转型如果忘记而忽略就会出现异常,这个异常在编译时是不会出现的,但是在运行时则会出现ClassCastException异常。
定义泛型的格式为:
类名<T>
类名<T, E extends F>
//定义宠物类
public class Pet {
}
//定义猫类继承宠物类
public class Cat extends Pet{
}
//定义狗类继承宠物类
public class Dog extends Pet {
}
//定义男士衣服
public class ManCloth {
}
//定义女士衣服
public class WomanColth {
}
//定义学生类
public class Student<T, E extends Pet> {
private String name;
//定义衣服类型为泛型。
private T cloth;
//定义宠物类型为泛型,泛型继承宠物
private E pet;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public T getCloth() {
return cloth;
}
public void setCloth(T cloth) {
this.cloth = cloth;
}
public E getPet() {
return pet;
}
public void setPet(E pet) {
this.pet = pet;
}
}
//测试类
public class TestGeneric {
public static void main(String[] args){
Student<ManCloth, Dog> stu = new Student();
Dog dog = stu.getPet();
ManCloth clth = stu.getCloth();
}
}