实验八 Java泛型程序设计应用

一、实验目的

1、掌握泛型的产生意义;

2、掌握泛型的基本使用。

二、实验学时

2学时

三、实验类型

验证性实验

四、实验需求

1、硬件

每位学生配备计算机一台

2、软件

Windows XP操作系统,JDK,eclipse,MySQL

3、网络

4、工具

五、实验理论与预备知识

1、泛型应用。

2、泛型的安全警告。

3、通配符。

4、泛型接口。

5、泛型方法。

六、实验内容与结果

1、编写一个泛型方法,让它能接受泛型参数并返回泛型类型

class fan{
	public <T> void show(T t) {
		System.out.println("泛型方法"+t);
	}
	public <T> T show2(T t) {
		System.out.println("泛型方法"+t);
		return t;
	}
}
public class fanxing {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		fan fx=new fan();
		fx.show("hello world");
		fx.show(1.43);
		fx.show2(7978887);
	}

}

2、按照要求定义一个操作类:要求完成一个一维数组操作类,其中可以加入任意类型的数据,数组具体的操作类型由程序外部决定,并且可以实现查询功能。

public class lianxi {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Operation op=new Operation(6);  
        op.add(new Data<Integer>(10));  
        op.add(new Data<Float>(12.0f));  
        op.add(new Data<String>("13"));  
        op.add(new Data<Integer>(10));  
        op.add(new Data<Double>(12.0));  
        op.add(new Data<Person>(new Person("张三")));  
        op.print();  
        op.search(10);  //查询Internet类  
        op.search(12.0);//查询Double类  
        op.search(12.0f);//查询Float类  
        op.search("13");//查询String类  
        Person a=new Person("李四");  
        op.search(a);//查询Person类
	}

}

class Data<T>{
	private T info;
	public Data(T info) {
		this.info=info;
	}
	public String toString() {
		return this.info.toString();
	}
	public T getInfo() {
		return info;
	}
}
class Operation{
	private Data[] datas;
	private int foot;
	public Operation(int len) {
		if(len>0) {
			this.datas=new Data[len];
		}
		else {
			this.datas=new Data[1];
		}
	}
	public void add(Data data) {
		if(this.foot<this.datas.length) {
			this.datas[this.foot]=data;
			this.foot++;
		}
		else
		{
			System.out.println("数组已满"); 
		}
	}
	public void search(Object x) {
		int i=-1;
		boolean flag=false;
		for(Data data:this.datas) {
			i++;
			if(data.getInfo().getClass()==x.getClass()&&data.toString().equals(x.toString())) {
				if(flag==false) {
					System.out.print("存在");
					flag=true;
				}
				 System.out.print("\tdata["+i+"]");
			}
		}
		if(flag==false){  
            System.out.println("不存在");  
        }else{  
            System.out.println();  
        }
	}
	public void print() {
		int i=0;
		for(Data data:this.datas) {
			System.out.println("data["+(i++)+"]="+data.toString()+"\t数据所属类:"+data.getInfo().getClass().toString().split(" ")[1]); 
		}
	}
}
class Person{  
    private String name;  
    public Person(String name){  
        this.name=name;  
    }  
    public String toString(){  
        return name;  
    }  
}

​​​​​​​

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值