关于Java泛型的理解

丶灬走出姿态 提交于 2020-02-26 16:03:20

/*     
* 项目名称:定义一个泛型数组类,并创建数组类的对象   
* 类名称:理解泛型   
* 类描述:   
* 创建人:柯盛  
* 创建时间:2019年8月6日 下午10:46:08   
* @version
* @其他:
*/

/*泛型是通用类型的类,泛型对象可以表示多种不同的类的对象;采用泛型类,就可以将行为(封装方式)相同,但属性的类型(数据类型)不同的多个类用一个泛型类表示*/
class GenericArray<T>       //定义泛型类,类型参数名T;
{
    int n;      //数组的总长度
    int total;  //数组的实际长度
    private Object arr[];
    
    public GenericArray(int n)
    {
        this.n = n;
        total = 0;
        arr = new Object[n];
    }
    
    public void add(T obj)         //将一个T型对象加入到数组中
    {
        arr[total++] = obj;
    }
    
    public T indexOf(int i)        //获得第i个元素,返回值类型是T型
    {
        return (T)arr[i];          //返回前强制转换成T型
    }
    
    public int length()
    {
        return total;
    }
}
public class 理解泛型 {
    public static void main(String args[])
    {
        int i;
        String str[] = new String[2];           //定义一个String类的对象数组
        str[0] = "Beijing";
        str[1] = "Shanghai";
        
        GenericArray<String> arrObj1 = new GenericArray<String>(10); //创建一个泛型类对象,所有元素均为string类型
        
        for(i=0;i<str.length;i++)      //将每个元素加到数组对象中
        {
            arrObj1.add(str[i]);
        }
        
        for(i=0;i<arrObj1.length();i++)
        {
            System.out.println(arrObj1.indexOf(i));
        }
        //-------------------------------------------------------
        System.out.println("--------------------------------------");
        
        Integer intObj[] = new Integer[2];
        intObj[0] = 123;
        intObj[1] = -456;
        
        GenericArray<Integer> arrObj2 = new GenericArray<Integer>(10); //创建一个泛型类对象,所有元素均为Integer类型
        
        for(i=0;i<intObj.length;i++)      //将每个元素加到数组对象中
        {
            arrObj2.add(intObj[i]);
        }
        
        for(i=0;i<arrObj2.length();i++)
        {
            System.out.println(arrObj2.indexOf(i).intValue());
        }
        //-------------------------------------------------------
        System.out.println("--------------------------------------");
        Object obj[] = new Object[2];
        obj[0] = "Beijing";
        obj[1] = -123;
        
        GenericArray<String> arrObj3 = new GenericArray<String>(10); //创建一个泛型类对象,所有元素均为String类型
        arrObj3.add("Beijing");
        //泛型对象arrObj3只能加String型对象,下面语句编译不能通过
        //arrObj3.add(-123);
        
        for(i=0;i<arrObj3.length();i++)
        {
            System.out.println(arrObj3.indexOf(i));
        }
    }
}

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!