import java.util.Arrays;
public class MyContainerDemo{
public static void main(String[] args){
MyContainer<String> container=new MyContainer<String>();
for(int i=0;i<12;i++){
container.add("元素"+(i+1));
}
for(int i=0;i<container.size();i++){
System.out.println(container.get(i));
}
MyContainer<Integer> container1=new MyContainer<Integer>();
for(int i=0;i<12;i++){
container1.add(i+1);
}
for(int i=0;i<container.size();i++){
System.out.println(container1.get(i));
}
}
}
//容器接口
interface Container<T>{
public int size();
public T get(int num);
public void add(T obj);
}
//容器类
class MyContainer<T> implements Container<T>{
//private T[] arr=new T[10];没有这种定义方法
private Object[] arr=null;//数组用来存放数据的
private int size=0;
//无参构造方法,默认初始容量为10
public MyContainer(){
arr=new Object[10];
}
//有参构造方法,自定义初始容量
public MyContainer(int num){
arr=new Object[num];
}
//添加元素
public void add(T obj){
ensureCapity(size+1);
arr[size]=obj;
size+=1;
}
//返回容器中有多少元素
public int size(){
return size;
}
//返回下标为num的元素。
public T get(int num){
return (T)arr[num];
}
//检查容器是否装满,装满后自动扩容1.5倍
private void ensureCapity(int num){
if(num>arr.length){
int oldlength=arr.length;
int newlength=arr.length+(arr.length>>1);
arr=Arrays.copyOf(arr,newlength);
}
}
}
上面显示不安全的操作,不影响程序的运行,如果想要消除,可以用注解的办法。