创建自定义泛型类型和方法

package net.liugeng.gencls;

import java.util.Arrays;

public class GenericDynamicArray <T>
{
private T[] arr ;
public static final int INITCAPACITY = 10;
private int count;

public GenericDynamicArray()
{
arr = (T[])new Object[INITCAPACITY];
count = 0;
}
/**
* 取得数组中下标为i的元素的值
* @param i  给定的下标
* @return    数组中下标i所对应的值
*/
public T get(int i)
{
if(i < 0 || i > count)
{
System.out.println("下标不合理");
}
return arr[i];
}

/**
* 取得数组中已经存储的元素的个数
* @return
*/
public int size()
{
return count;
}
/**
* 添加一个新元素
* @param num
*/
public void add(T num)
{
if(arr.length == count)
{
arr = increaseCapacity(arr);
}
arr[count] = num;
count ++;
}
/**
* 移除下标为i的元素
* @param i
*/
public void remove(int i)
{
if(i < 0 || i > count)
{
return ;
}
for(int j = i + 1; j < count; j ++)
{
arr[j-1]= arr[j];
}
count --;
}
/**
* 给数组增容
* @param myArr
* @return
*/
private T[] increaseCapacity(T[] myArr)
{
T[] newArr = (T[])new Object[myArr.length * 2];
for(int i = 0; i < myArr.length; i ++)
{
newArr[i] = myArr[i];
}
return newArr;
}
public void display()
{
for(int i = 0; i < count; i ++)
{
System.out.print(arr[i] + ", ");
}
}
public T[] getArray()
{
return Arrays. <T>copyOf( arr, count );
}
public void displayAll()
{
for(int i = 0; i < arr.length; i ++)
{
System.out.print(arr[i] + ", ");
}
}
}


// 测试
public class Main
{
public static void main(String[] args)
{
GenericDynamicArray <Integer> gda = new GenericDynamicArray <Integer>();
gda.add( new Integer( 1 ) );
gda.add( new Integer( 2 ) );
gda.add( new Integer( 3 ) );
Integer[] arr = gda.getArray();    // 第51行,为什么呢?
for( Integer val : arr )
{
System.out.println( val );
}
}

}


// 出错
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
at net.liugeng.gencls.Main.main(Main.java:51)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值