不要抱着过去不放,拒绝新的观念和挑战。
本讲内容:泛型与反射机制
一、泛型的基本概念
泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
譬如:ArrayList<Student> stu=new ArrayList<Student>();通过泛型将类型定下来,不用再强转了。
使用泛型有下面几个优点:(安全和提高代码的重用率)
1、类型安全
2、向后兼容
3、层次清晰
4、性能较高,有GJ(泛型java)编写的代码可以为java编译器和虚拟机带来更多的类型信息,这些信息对java程序做进一步优化提供条件。
二、反射机制
反射机制是将泛型固定的类的所有方法和成员全部可以显示出来,以供程序员可以确定程序的编写是否有误的机制。
我们通过二个例子感受一下
package a;
public class Text {
public static void main(String[] args) {
Animal<String> a=new Animal<String>("dan");
a.showTypeName();
}
}
//定义一个类
class Animal<T> {
private T o;
public Animal(T o) {
this.o=o;
}
public void showTypeName() {
System.out.println("类型是:"+o.getClass().getName());
}
}
类型是:java.lang.String
package a;
import java.lang.reflect.Method;
public class Text {
public static void main(String[] args) {
Animal<Bird> a=new Animal<Bird>(new Bird());
a.showTypeName();
}
}
class Bird{
public void sleep() {
System.out.println("sleep");
}
public void eat() {
System.out.println("eat");
}
}
//定义一个类
class Animal<T> {
private T o;
public Animal(T o) {
this.o=o;
}
//得到T的类型名称
public void showTypeName() {
System.out.println("类型是:"+o.getClass().getName());
//通过反射机制,我们可以得到T这个类型的很多信息
Method[] m=o.getClass().getDeclaredMethods();
for(int i=0;i<m.length;i++){
System.out.println(m[i].getName());
}
}
}
类型是:a.Bird
sleep
eat
本讲就到这里,Take your time and enjoy it