实验目的:
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类
}
}