package com.reflect;
import java.lang.reflect.InvocationTargetException;
/**
* 反射 学习
* 反射的功能就是 类、对象,可以通过 反射 获取 里面的 方法、属性的功能
* @author Administrator
*
*/
public class YuQingChongFuTest {
public static void main(String[] args) throws Exception {
//方法名称
String setname = "test";
//值
String strdata = "这是值";
YuQingChongFuTest yuQingChongFuTest = new YuQingChongFuTest();
//动态修改
//String.class 是test的参数类型
//调用下面的test方法
yuQingChongFuTest.getClass().getMethod(setname, String.class,Integer.class).invoke(yuQingChongFuTest, strdata,123);
// 获取类 获取方法 调用方法名 方法参数类型 启用方法 具体类名 具体参数
}
public void test(String str,Integer str2){
System.out.println("test()method..."+str+str2);
}
/**
* 根据名称将值set到对应的主体
* @param entity 实体类 (类似普通的bean)_
* @param name 字段名称
* @param strdata 财务值
* @return
*/
public static Boolean setValueToName(Object entity,String name,String strdata) {
if (name!=null) {
String setname = "set" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length()).toLowerCase();//获得set名称
String getname = "get" + name.substring(0, 1).toUpperCase() + name.substring(1, name.length()).toLowerCase();//获得get名称
try {
String Methodtype=entity.getClass().getMethod(getname).getReturnType().getName();//获得类型
if(Methodtype!=null){
if("java.lang.String".equals(Methodtype)){//字符类型
entity.getClass().getMethod(setname, String.class).invoke(entity, strdata);//动态修改
return true;
}else if("java.lang.Byte".equals(Methodtype)){
entity.getClass().getMethod(setname, Byte.class).invoke(entity, Byte.parseByte(strdata));//动态修改
return true;
}else if("java.lang.short".equals(Methodtype)){
entity.getClass().getMethod(setname, Short.class).invoke(entity, Short.parseShort(strdata));//动态修改
return true;
}else if("java.lang.Double".equals(Methodtype)){
entity.getClass().getMethod(setname, Double.class).invoke(entity, Double.parseDouble(strdata));//动态修改
return true;
}else if("java.lang.Float".equals(Methodtype)){
entity.getClass().getMethod(setname, Float.class).invoke(entity, Float.parseFloat(strdata));//动态修改
return true;
}else if("java.lang.Boolean".equals(Methodtype)){
entity.getClass().getMethod(setname, Boolean.class).invoke(entity, Boolean.parseBoolean(strdata));//动态修改
return true;
}else if("java.lang.Integer".equals(Methodtype)){
entity.getClass().getMethod(setname, Integer.class).invoke(entity, Integer.parseInt(strdata));//动态修改
return true;
}
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
return false;
}
}