`
缠小溪
  • 浏览: 24255 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

java之泛型

 
阅读更多
/*
 * 泛型
 * 泛型是java se1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类,接口和方法的创建中,分别
 * 称为泛型类,泛型接口,泛型方法
 * 泛型的好处是安全简单
 * 在没有泛型之前是通过对类型object的引用来实现参数的任意化,任意化带来的缺点是是要强制转换类型,而这种强制转换是在开发人员在堆参数的类型的提前的预知
 * 的基础下进行的,强制类型转换的错误编译器可能会忽略,而等到程序运行的时候才会报错,这无疑就留下了安全隐患
 * 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率
 * 泛型的反射机制
 * 泛型的优点:
 * 		类型安全
 * 		向后兼容
 * 		层次清晰
 * 		性能较高,用GJ(泛型java)编写程序可以给java编译器和虚拟机带来更多的类型信息,这些信息为进一步优化java的程序提供条件
 * 
 */
import java.util.*;
public class Demo9 {
	public static void main(String[] args){
		ArrayList<Dog> al=new ArrayList<Dog>();//使用泛型,就可以不用强制类型转换,编译器会自动根据对象的类型自动转换
		Dog dog1=new Dog();
		//Dog dog1=(Dog)new Dog();//不在需要这样认为转换
		al.add(dog1);
		Dog temp=al.get(0);
		//Cat temp=(Cat)al.get(0);//类型转换出错
	}

}

class Dog{
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
class Cat{
	private String color;
	private int age;
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
/*
 * 泛型的反射机制
 */
import java.lang.reflect.*;
public class Demo10 {
	public static void main(String[] args){
		Gen<String> gen1=new Gen<String>("aaa");
		//gen1.showTypeName();
		Gen<Integer> gen2=new Gen<Integer>(1);
		//gen2.showTypeName();
		Gen<Bird> gen3=new Gen<Bird>(new Bird());
		gen3.showTypeName();
		
	}
}
class Gen<T>{
	private T o;
	//构造函数
	public Gen(T a){
		o=a;
	}
	//得到T的类型
	public void showTypeName(){
		System.out.println("类型是:"+o.getClass().getName());
		System.out.println("方法是:");
		//通过反射机制可以得到某个类的很多的信息
		Method [] m=o.getClass().getMethods();
		for(int i=0;i<m.length;i++){
			System.out.println(m[i].getName());
		}
	}
}
class Bird{
	public void test1(){
		System.out.println("aaa");
	}
	public float count(float a,float b){
		return (a+b);
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics