首页 > 代码库 > 学习笔记十八:泛型

学习笔记十八:泛型

不要抱着过去不放,拒绝新的观念和挑战。


本讲内容:泛型与反射机制


一、泛型的基本概念

泛型是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


学习笔记十八:泛型