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;  } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值