Java 泛型程序设计应用

本文档展示了如何使用Java泛型编写方法,实现参数化类型输入与返回。同时,提供了一个名为Operation的一维数组操作类,该类能够接受任意类型的数据,并实现查询功能。实验通过示例展示了添加不同类型数据到数组、打印数组内容以及搜索指定元素的功能。
摘要由CSDN通过智能技术生成

实验目的:

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

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

实验题目:

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

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

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

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

参考:

内容1:

 内容2:

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;  
    }  
}//写个自己定义的Peron类  
public class TestT{  
    public static void main(String args[]){  
        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类  
    }  
}  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值