实验八 Java泛型程序设计应用
一、实验目的
1、掌握泛型的产生意义;
2、掌握泛型的基本使用。
二、实验学时
2学时
三、实验类型
验证性实验
四、实验需求
1、硬件
每位学生配备计算机一台
2、软件
Windows XP *** 作系统,JDK,eclipse,MySQL
3、网络
无
4、工具
无
五、实验理论与预备知识
1、泛型应用。
2、泛型的安全警告。
3、通配符。
4、泛型接口。
5、泛型方法。
六、实验内容与结果
1、编写一个泛型方法,让它能接受泛型参数并返回泛型类型。
- public class T1<T> {
- public T getType(T a) {
- return a;
- }
- public static void main(String[] args) {
- T1 str = new T1<>();
- System.out.println(str.getType("肖康乐"));
-
- }
- }
|
2、按照要求定义一个 *** 作类:要求完成一个一维数组 *** 作类,其中可以加入任意类型的数据,数组具体的 *** 作类型由程序外部决定,并且可以实现查询功能。
Data类:
- package arrayList;
- class Data<T>{//这个类的实例化对象是下面Operation'数组'的一个元素
- private T info;//这是里储存数据内容
- public Data(T info) {//构造
- this.info=info;
- }
- @Override//检查是否覆写了父类方
- public String toString() {
- return this.info.toString();
- }
- public T getInfo() {
- return info;
- }
- }
|
Operation类:
- package arrayList;
- class Operation {
- private Data datas[];//Data类型的数组;仅仅是声明
- private int foot;
- public Operation(int len) {
- if(len>0) {
- this.datas = new Data[len]; //这里实例化
- }else {
- System.out.println("参数len错误,构造失败");
- }
- }
- 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 element:this.datas) {
- i++;
- if(element.getInfo().getClass()==x.getClass()&&element.toString().equals(x.toString())) {//类型 数据都相同
- if(flag==false) {
- System.out.println(x.toString()+"存在,它是:");
- flag=true;
- System.out.println("\tdatas["+i+"]");
- }
- }
- if(flag=false) {
- System.out.println("不存在");
- }else {
-
- }
- }
- }
- public void print() {//这是数组的输出
- int i=0;
- for(Data element:this.datas) {
- System.out.println("data["+(i++)+"]="+element.toString()+"\t数据所属类:"
- +element.getInfo().getClass().toString().split(" ")[1]);
- //先用split(' ')方法将字符串以" "开割形成一个字符串数组,然后再通过索引[1]取出所得数组中的第二个元素的值。
- }
- }
- }
|
Test类:
- package arrayList;
- import com.sun.org.apache.bcel.internal.generic.NEW;
- /*
- * 写一个study类 用来测试
- */
- class study{
- private String sname;
- public study(String sname) {
- this.sname=sname;
- }
- public String getSname() {
- return sname;
- }
- @Override
- public String toString() {
- return sname;
- }
- }
- public class Test {
- public static void main(String[] args) {
- //创建
- Operation list = new Operation(3);
- //添加
- list.add(new Data(8));
- list.add(new Data("这是一个字符串元素,在他之前有一个数字元素,在他之后有个一study元素"));
- list.add(new Data(new study("xkl")));//参数是Data类
- //查找
- study a=new study("xkl");
- list.search(a);//参数是object类
- //输出
- list.print();
- }
- }
|
运行结果:
评论列表(0条)