高级java实验指导书(1) 下载本文

(1)创建Person类,Person的属性有:

Strng name 姓名 String sex 性别 Integer age 年龄

String idNo 身份证号

Boolean isMerried 是否已婚

请生成相应的getter、setter方法,并创建两个构造方法:Person(),Person(String idNo),把Person编译成.class文件。请通过反射技术,为Person生成相应的.java代码,java代码中的方法的方法体为空,即方法内部代码不用生成。请注意生成的java代码的格式。

(2) 请为第1题目中Person类创建实例(对象),并为每个属性赋值,然后采用反射技术,把创建的Person实例的属性值存入文本文件中,文本文件的格式为: idNo = 5122245566 name = 张小平 age = 23 sex = Male

isMerried = true

三、实验结果

写实验报告。内容包括:

1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照) 3、若有没通过的程序,分析原因。

四、选做题目

(1) 请采用反射技术为一个的类的所有私有属性生成相应的getter、setter方法。

(2) 思考Java的动态代理是怎么实现的?请试图设计动态代理功能,并实现核心的代码。(提示:如果在运行时能够把.java的文件编译成.class文件,是不是问题就可以解决)

(3)编写一个实现IOC功能的简单Spring框架并编写测试程序。 (4)创建代理类 PersonProxy,PersonProxy的在代理Person类的所有setter方法时,把方法的调用时间、方法名称写入到文本文件中,每一行日志的格式为: 时间:2012-09-01 23:34:24;方法名称:setName;参数:张小平

实验3 泛型

一、实验目的

9

1、了解泛型的基本概念以及为什么要使用泛型。

2、了解泛型类、泛型方法、泛型接口、泛型数组以及泛型的继承。 3、学习如何利用泛型写出更加严谨的程序。

二、实验内容

1、验证实验

(1)输入如下程序观察编译器会报什么错误。

public class GenericTest {

public static void main(String[] args) {

List list1 = new ArrayList();

list1.add(new Integer(1));

list1.add(new String(\测试\

}

}

(2)输入如下程序,观察输出结果是什么?

public class Person {

protected T t;

public Person(T t){

this.t = t;

}

public String toString(){

return \参数的类型是:\

}

(3)输入如下程序,观察输出结果是什么?

public class GenericTest {

public static void main(String[] args) throws Exception{

Class clazz = Integer.class;

System.out.println(clazz.getCanonicalName());

clazz = String.class;

System.out.println(clazz.getCanonicalName());

clazz = Date.class;

System.out.println(clazz.getCanonicalName());

}

}

2、程序填空 (1)如下程序,在GenericTest类中创建一个Interger类型的Person对象。并输出person对象的类型名称。

10

public class Person {

protected T t;

public Person(T t){

this.t = t;

}

public String toString(){

return \参数的类型是:\

}

}

public class GenericTest {

public static void main(String[] args){

————————————

————————————

}

(2)如下代码,怎么填才能使其正确 ArrayList dates___=new ArrayList___(); dates.add(new Date);

Date date = dates.get(0) ; 三、根据下面的要求编写程序

(1)设计一个泛型堆栈类GenericStack,并编写一个测试程序。 (2)使用泛型二分查找法实现下面的方法。

Public static >int binarySearch(E[] list,E key)

(3)实现下面的方法,返回数组中的最大元素

Public static >E max(E[]list)

四、实验结果

写实验报告。内容包括:

1、习题的运行结果,源程序。 2、程序调试中出现的错误提示。(英文、中文对照) 3、若有没通过的程序,分析原因。

五、选做题目

11

(1)使用泛型选择排序法实现下面的方法

Public static >void selectionSort(E[] list) (2)使用泛型插入排序法实现下面的方法

Public static >void insertionSort(E[] list)

(3)编写一个泛型方法返回二维数组的最大元素

Public static >E max(E[][] list) (4) 请思考Java为什么在编译时要擦除泛型信息,如果不擦除泛型信息,有什么样的优点和缺点?

一、实验目的

实验4 注解

12