java之泛型

来源:互联网 发布:淘宝买家黄钻普遍吗 编辑:程序博客网 时间:2024/05/16 23:39
/* * 泛型 * 泛型是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);}}

原创粉丝点击