黑马程序员技术交流社区

标题: 关于张老师的reflect视频实践 [打印本页]

作者: 冯华亮    时间: 2012-8-10 22:26
标题: 关于张老师的reflect视频实践
本帖最后由 冯华亮 于 2012-8-10 22:30 编辑

看完张老师视频后,动手实践了一下反射机制的运用。看视频的时候感觉反射简单,结果一动手的时候就出现了各种各样的错误,建议大家在看视频的时候还是要多做练习,看的懂是一回事,会写又是另一回事!分享交流一下学习经验。下面是代码:
  1. import java.lang.reflect.*;
  2. class Student
  3. {
  4.         public String name;
  5.         private int age;
  6.        private int score;
  7.         public Student(){}
  8.         public Student(String str){
  9.                 this.name=str;
  10.         }
  11.         public Student(String name,int age,int score){
  12.                 this.name=name;
  13.                 this.age=age;
  14.                 this.score=score;
  15.         }
  16.         public String getname(){
  17.             return this.name;
  18.         }
  19.         public int getage()
  20.         {
  21.                 return this.age;
  22.         }
  23.         public int getscore()
  24.         {
  25.                 return this.score;
  26.         }
  27.         public void printInfo(){
  28.                 System.out.println("该生的信息如下:"+"\r\n"+name+"  "+age+"  "+score);
  29.         }
  30.         public String toString(){
  31.                 if(this.age==0&&this.score==0)
  32.                         {
  33.                 return "毕加猪经典语录:"+"\r\n"+name;
  34.                 }
  35.                 return "毕加猪经典语录:"+"\r\n"+name+"  "+age+"  "+score;
  36.         }
  37. }

  38. class ReflectDemo
  39. {
  40.         public static void main(String[] args) throws Exception
  41.         {
  42.                  Student stu1=new Student("黑马_冯华亮",11,22);
  43.                  Student stu2=new Student("黑马_郑小杰",33,44);
  44.                  getconstructor();
  45.                
  46.                  System.out.println("----------------------------");
  47.                  getfield(stu1);
  48.                  
  49.                  System.out.println("----------------------------");
  50.                  getmethod(stu2);
  51.         }
  52.         public static  void getconstructor() throws Exception
  53.                 {
  54.                 Constructor constru=Class.forName("Student").getConstructor(String.class);
  55.                 Student stu=(Student)constru.newInstance("笑只是个表情,与快乐无关");
  56.                 System.out.println(stu.toString());
  57.         }
  58.         public static void getfield(Student stu) throws Exception
  59.                 {
  60.                //Student类中score是private的,采用getDeclaredField() 方法
  61.                   Field field=Class.forName("Student").getDeclaredField("score");
  62.                  field.setAccessible(true);
  63.                  int score=(int)field.get(stu);
  64.                 System.out.println(stu.getname()+"的成绩是: "+score);

  65.         }
  66.         public static void getmethod(Student stu) throws Exception
  67.                 {
  68.                  Method mthod=Class.forName("Student").getMethod("printInfo");
  69.                  mthod.invoke(stu);
  70.                  System.out.println("如果你看见学生信息输出,则说明方法映射successfully");
  71.                  System.out.println("");
  72.         }
  73. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2