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

    }

  • 相关阅读:
    最小二乘法拟合圆
    OpenCV solve() 解线性方程
    Halcon、OpenCV、C++ 实现最小二乘法拟合直线
    Halcon 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转
    Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)
    将Halcon HObject类型转为Qt QImage类型
    Halcon HImage 与 Qt QImage 的相互转换
    Qt 加载DLL的几种方式小结
    Halcon17无法加载"hdevenginecpp":找不到指定的模块
    Halcon 安装提示 could not write updated path to HKLM
  • 原文地址:https://www.cnblogs.com/signoffrozen/p/8950750.html
Copyright © 2020-2023  润新知