/*
* 项目名称:定义一个泛型数组类,并创建数组类的对象
* 类名称:理解泛型
* 类描述:
* 创建人:柯盛
* 创建时间: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));
}
}
}
来源:https://www.cnblogs.com/kesheng/p/12367328.html