石新柱的新家

导航

java 反射

package com.java.lesson.reflect;

import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;

public class ReflectLessonDemo01 {

 private String str01;  private String str02;

 public int add(int a, int b) {   return a + b;  }

 public int multi(int a, int b) {   return a * b;  }

 public static void main(String[] args) {

  // // ① Class<?> ----> Class.forName()   // try {   // Class<?> classType = Class.forName(ReflectLessonDemo01.class   // .getName());   // Method[] methods = classType.getDeclaredMethods();   //   // for (Method method : methods)   // System.out.println(method);   // } catch (ClassNotFoundException e) {   // e.printStackTrace();   // }

  // ②    

   try {    Class<?> classType = Class.forName(ReflectLessonDemo01.class.getName());

   Object invokeObject = classType.newInstance();

   Method addMethod = classType.getMethod("add", new Class[] { int.class, int.class });

   Object result = addMethod.invoke(invokeObject, new Object[] { 1, 2 });       

   System.out.println((Integer)result);

  } catch (InstantiationException e) {   

    e.printStackTrace();   }

 catch (IllegalAccessException e) {   

 e.printStackTrace();   }

 catch (ClassNotFoundException e) {   

 e.printStackTrace();   }

 catch (SecurityException e) {    

e.printStackTrace();   }

catch (NoSuchMethodException e) {   

 e.printStackTrace();   }

 catch (IllegalArgumentException e) {  

  e.printStackTrace();   }

catch (InvocationTargetException e) {   

 e.printStackTrace();  

     }

    }

}

 

===========================

package com.java.lesson.reflect;

import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException;

public class ReflectTest {

 public Object copy(Object object) {

  Class<?> classType = object.getClass();   try {    // Constructor cons = classType.getConstructor(new Class[] {});    Constructor cons = classType.getConstructor(new Class[] {      String.class, int.class });

   Object obj = cons.newInstance(new Object[] { "hello", 5 });

  } catch (SecurityException e) {    e.printStackTrace();   } catch (NoSuchMethodException e) {    e.printStackTrace();   } catch (IllegalArgumentException e) {    e.printStackTrace();   } catch (InstantiationException e) {    e.printStackTrace();   } catch (IllegalAccessException e) {    e.printStackTrace();   } catch (InvocationTargetException e) {    e.printStackTrace();   }

  System.out.println(classType.getName());   return null;  }

 public static void main(String[] args) {

  ReflectTest test = new ReflectTest();   test.copy(new Customer());

 }

}

class Customer {  private Long id;  private String name;  private int age;

 public Customer() {

 }

 public Customer(String name, int age) {   this.name = name;   this.age = age;  } }

posted on 2012-02-20 20:21  shixinzhu  阅读(174)  评论(0编辑  收藏  举报