安徽工业大学——java实验报告

上传人:第*** 文档编号:34242279 上传时间:2018-02-22 格式:DOC 页数:20 大小:2.41MB
返回 下载 相关 举报
安徽工业大学——java实验报告_第1页
第1页 / 共20页
安徽工业大学——java实验报告_第2页
第2页 / 共20页
安徽工业大学——java实验报告_第3页
第3页 / 共20页
安徽工业大学——java实验报告_第4页
第4页 / 共20页
安徽工业大学——java实验报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《安徽工业大学——java实验报告》由会员分享,可在线阅读,更多相关《安徽工业大学——java实验报告(20页珍藏版)》请在金锄头文库上搜索。

1、Java课程设计报告学 号 XXX姓 名 XXX班 级 计 11X指导教师 柯栋梁安徽工业大学计算机学院2013 年 12 月实验 一: 利用 JAVA 反射技术分析类结构自己定义的类:package chap05;public class analysis private int a;private char c;protected int b;public double d;public void test1()private void test2()protected double test3()return 1.0;用java反射技 术分析 输出的结果:Enter class name

2、 (e.g. java.util.Date): chap05.analysisclass chap05.analysispublic chap05.analysis();public void test1();private void test2();protected double test3();private int a;private char c;protected int b;public double d;1.分析程序运行时的输出结果。输出的结果中显示了被分析类的方法与变量,包括这些方法与变量的修饰符2.分析与 JAVA 反射技术相关的几个类的作用:java.lang.refle

3、ct.Constructor;Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。java.lang.reflect.Field;Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。java.lang.reflect.Method;Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法) 。java.lang.reflect.Modifier;Modifier 类提供了 static 方法和常量,对类和成员访问修饰符进行解码。修饰符集被表示为

4、整数,用不同的位位置 (bit position) 表示不同的修饰符。实验二 :利用 JAVA 反射技术分析对象结构实验内容:运行示例程序,分析 Integer 数组对象的结构 ;改写程序分析一下自定义的类对象,如 Employee 类。结果分析:该程序较为复杂,通过调试模式我发现 ObjectAnalyzer 的 toString 方法为一递归函数,从代码可以看出程序是用来分析对象中非静态的成员变量并将其显示出来,通过递归分析对象中的对象的成员变量,通过获取超类分析其继承来的成员变量。自己编的类:package chap05;public class analysis extends Emp

5、loyeeprivate int a = 0;private char c = ;static protected int b = 0;public double d = 0;public void test1()private void test2()protected double test3()return 1.0;分析结果:chap05.analysisa=0,c= ,d=0.0salary=0.0,name=null,year=0,mouth=0,day=0实验三: 利用 JAVA 反射技术调用方法指针定义的 People类:package chap05;public abstrac

6、t class People double salary;String name;int year,mouth,day;public abstract double getSalary();public abstract void setSalary(double salary);class Employee extends PeopleEmployee(String name,double salary,int year,int mouth,int day)this.salary = salary;this.name = name;this.year = year;this.mouth =

7、mouth;this.day = day;Employee()public double getSalary()return salary;public void setSalary(double salary)this.salary = salary;class Manager extends Peopleprivate double bonus;Manager(String name,double salary,int year,int mouth,int day)this.salary = salary;this.name = name;this.year = year;this.mou

8、th = mouth;this.day = day;bonus= 0;public double getSalary()return salary+bonus;public void setSalary(double salary)this.salary = salary;public void setBonus(double bonus)this.bonus = bonus;通过指针调用的结果:public static double chap05.MethodPointerTest.square(double)9.0public static double java.lang.Math.s

9、qrt(double)3.0public double chap05.Employee.getSalary()50000.0public void chap05.Manager.setBonus(double)public double chap05.Manager.getSalary()80000.03.结果分析:1.分析程序运行时的输出结果。代码中Methodl类就相当于一个指向类中方法的指针,Class类通过getMethod方法获取这个Method 类,之后Method类的对象可以通过invoke方法来调用这个方法。2.掌握反射技术调用类(对象)方法的基本原理与流程。(同上)4.扩展:

10、1.自定义一些简单类,使用反射技术调用该类( 静态方法)或类对象的方法;package chap05;import java.lang.reflect.*;public class MethodPointertest2 public static void main(String args) throws ExceptionMethod sin = Math.class.getMethod(sin,double.class);Field PI = Math.class.getField(PI);System.out.println(sin.invoke(null, PI.getDouble(n

11、ull)/2);输出结果:1.0这里没有再自己定义方法了,这里类比Method方法的使用过程通过Field方法获取了Math类里的PI成员并使用2.对于未知类(对象)的内部结构, 如何利用反射技术调用其方法?可以先通过反射技术分析其结构再通过反射技术调用其方法。实验四: 利用 TreeSet 实现集合元素排序源代码:package shiyan04;import java.util.*;public class Employee implements Comparablepublic String name;public int salary;public Date hiredate = ne

12、w Date();Employee(String name,int salary,Date hiredate)this.name = name;this.salary = salary;this.hiredate.setTime(hiredate.getTime();public int compareTo(Employee other)return pareTo(other.name);class salaryComparator implements Comparatorpublic int compare(Employee a,Employee b)return a.salary - b

13、.salary;package shiyan04;import java.text.SimpleDateFormat;import java.util.*;public class Process public static void main(String args) Employee e = new Employee10;Date nowTime = new Date();SimpleDateFormat format = new SimpleDateFormat(yyyy-MM-dd);String name = 张三, 李四, 王五, 赵六, Tom, Jerry, Amy,test,

14、 Jack, John ;long oneday = 86400000;/ System.out.println(nowTime);for (int i = 0; i byname = new TreeSet();for (Employee i : e) byname.add(i);Iterator iter = byname.iterator();while (iter.hasNext() Employee e1 = iter.next();System.out.println(e1.name + + e1.salary + + format.format(e1.hiredate);Syst

15、em.out.println(按工资:);salaryComparator comp2 = new salaryComparator();SortedSet bysalary = new TreeSet(comp2);for (Employee i : e) bysalary.add(i);iter = bysalary.iterator();while (iter.hasNext() Employee e1 = iter.next();System.out.println(e1.name + + e1.salary + + format.format(e1.hiredate);System.out.println(按日期:);SortedSet bydate = new TreeSet(new Comparator() public int compare(Employee a, Employee b) return pareTo(b.hiredate););for (Employee i : e) bydate.add(i);iter = bydate.iterator();while (iter.hasNext() Employee e1 = iter.next();System.out.println(e1.name +

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号