一、实验目的
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;
}
}