zoukankan      html  css  js  c++  java
  • java反射

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

    }

  • 相关阅读:
    169_Majority Element
    171_Excel Sheet Column Number
    217_Contains Duplicate
    242_Valid Anagram
    【findIndex】根据数组对象某一元素的id,找到此元素在数组所在的位置
    【鼠标右击组件】v-contextmenu
    【 拖拽组件】基于 Sortable.js 的 Vue 拖拽组件。 访问地址:Vue.Draggable
    【vue-markdown编辑器】vue-markdown 组件github地址
    mac下如何制作windows启动盘
    【vue webstorm】WebStorm Vue代码格式错误
  • 原文地址:https://www.cnblogs.com/signoffrozen/p/8950750.html
Copyright © 2011-2022 走看看