/**
 * 泛型讲解
 */
package com.test;

import java.lang.reflect.Method;

import java.util.ArrayList;

public class test9 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //案例一
        ArrayList<Pig> al = new ArrayList<Pig>();
        Pig pig1 = new Pig();
        al.add(pig1);
        Pig temp = al.get(0); //如果不用泛型则是这样:Pig temp = (Pig)al.get(0);
        temp.showMessage1();
        //案例二
        Bird bd = new Bird();
        Gen<Bird> gen1 = new Gen<Bird>(bd);
        gen1.showTypeName();
        gen1.showMessage2();
    }

}

//案例一

class Pig
{
    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;
    }
    
    public void showMessage1()
    {
        System.out.println("这是第一个案例!!");
    }
    
}

//案例二

//定义一个泛型类
class Gen<T> //T是参数类型
{
    private T o;
    
    //构造函数
    public Gen(T a)
    {
        o = a;
    }
    
    //得到T的类型名称
    public void showTypeName()
    {
        System.out.println("类型是:"+o.getClass().getName());
        //通过JAVA反射机制,我们可以得到T这个类型的相关信息
        Method[] m = o.getClass().getDeclaredMethods();
    }
    
    public void showMessage2()
    {
        System.out.println("这是案例二!!");
    }
}


//定义一个Bird类
class Bird
{
    public void test1()
    {
        System.out.println("aa");
    }
    
    public void count(int a, int b)
    {
        System.out.println(a+b);
    }
}
小结:

posted on 2014-10-21 14:26  milantgh  阅读(165)  评论(0编辑  收藏  举报