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

    }

  • 相关阅读:
    SpinLock 实现
    支持正则或通配符的hashmap
    HTTP报文
    Protostuff序列化
    【转】轻量级分布式 RPC 框架
    Servlet 3特性:异步Servlet
    Web服务器的工作原理
    《恰如其分的软件架构:风险驱动的设计方法》——读书笔记
    Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)
    Java Socket常见异常处理 和 网络编程需要注意的问题
  • 原文地址:https://www.cnblogs.com/signoffrozen/p/8950750.html
Copyright © 2020-2023  润新知