泛型数组Java(数组中存入不同类型的元素)

定义一个操作类Operation,操作类的属性是泛型类Data;
Operation类构造数组Data[],Data的元素可以实例化为不同的类型

泛型类:作为数组的元素可以实例化成各种类型

class Data<T>{//泛型类,可以实例化各种类型的对象
	private T data;
	public Data(T data){
		this.setData(data);
	}
	public void setData(T data){
		this.data=data;
	}
	public T getData(){
		return this.data;
	}
	public String toString(){//覆写toString方法,用于输出
		return this.data.toString();
	}
}

操作类:构造数组,添加,查找操作

class Operation{//操作类,以泛型类作为自己的属性
	private Data[] d;
	private int foot;//记录数组长度
	public Operation(int n){//创建泛型数组
		if(n>0){
		  this.d=new Data[n];
		}else{
			System.out.println("构造异常");
		}
	}
	public void add(Data data){//向泛型数组中加入元素
		if(foot<d.length){
			d[foot]=data;
			++foot;
		}else{
			System.out.println("数组已满");
		}
	}
	public void search(Object item){
		for(int i=0;i<d.length;++i){
			if(d[i].getData().getClass().equals(item.getClass())&&d[i].getData().equals(item)){
				//检测数据类型和数据内容是否都一致
				System.out.println("存在");
				return;
			}
		}
		System.out.println("不存在");
		return;
	}
	public void print(){
		for(int i=0;i<d.length;++i){
			System.out.println(d[i]);
		}
	}
}

测试

public class Train{
	public static void main(String args[]){
		Operation a=new Operation(5);//创建操作类对象
		Data<String>d1=new Data<String>("你好");//String类型
		Data<Integer>d2=new Data<Integer>(25);//int类型
		Data<Float>d3=new Data<Float>(50.2f);//float类型
		Data<Boolean>d4=new Data<Boolean>(true);//bool类型
		a.add(d1);
		a.add(d2);
		a.add(d3);
		a.add(d4);
		a.print();
		a.search(25);
	}
}
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页