package test;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;/* * 作者:钟志钢 * 功能:泛型 * 时间:2013-1-27 * 1, 泛型好处:类型安全,向后兼容,层次清楚,性能较高 */public class 泛型 {/** * @param args */public static void main(String[] args) {泛型 fx = new 泛型();}public 泛型(){List al = new ArrayList();Dog dog1 = new Dog();al.add(dog1);Dog dog = (Dog) al.get(0);//正确//当我们不知道al里装的是什么,如果//Cat cat = (Cat) al.get(0);//编译可能通过,运行不会通过,发生运行时错误//解决方案:泛型,这样可以把错误发生的可能提前到编译时List dl = new ArrayList();dl.add(dog1);Dog d = dl.get(0);//Cat c = dl.get(0);这样的编译是不通过的//java反射机制Gen gs = new Gen("aaa");gs.showTypeName();Gen myb = new Gen(new Bird());myb.showTypeName();}}//当我们不确定T的类型时,就用泛型代替,并且能减少重复代码,提高效率class Gen{private T o;public Gen (T a){this.o = a;}public void showTypeName(){System.out.println("o 的类型是:" + o.getClass().getName());//通过反射机制可以得到T类型的很多信息,比如成员函数Method [] ms = o.getClass().getDeclaredMethods();//获得所有public方法for(Method m : ms){System.out.println(m.getName());}}}class Bird {public void test1(){System.out.println("bird");}public void count (int a , int b){System.out.println("Bird计算a+b" + (a + b));}}class Dog {private String name ; 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;}private int age;}class Cat {private String color;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;}private int age;}

更多相关文章

  1. Android 中与 Touch 事件分发和消费机制
  2. Android ViewGroup事件分发机制
  3. Android 识别SIM卡类型
  4. android 内存缓冲机制:MemoryCache
  5. 我今天的面试题,注册广播有几种方式,这些方式有何优缺点?请谈谈Andr
  6. 安卓4.X系统 增加蓝牙接收文件类型
  7. JS判断终端类型的几种方法

随机推荐

  1. 关于ExpandableListView用法的一个简单小
  2. Android与iOS性能差距的个人见解
  3. Android 图片压缩详解
  4. Handle机制详解
  5. 深入Android的消息机制源码详解~Handler,M
  6. Android线程模型(Painless Threading)
  7. Android安卓系统提示应用程序未安装的解
  8. 《Android3D游戏开发技术详解与典型案例
  9. android下jni开发
  10. Android(安卓)事件拦截机制一种粗鄙的解