zoukankan      html  css  js  c++  java
  • java通过反射获取类中public 方法的返回类型 方法名 参数类型和属性类型及名称

    java通过反射获取类中public 方法和属性并赋值调用

    1.java通过反射获取类中public 方法的返回类型 方法名 参数类型的实现方法并打印出来.

     1 import java.lang.reflect.Method;
     2 import java.lang.reflect.Parameter;
     3 
     4 public class ClassUtil {
     5     public static void getClassMethodsName(Object o){
     6         Class aClass = o.getClass();
     7         System.out.println("类名:"+aClass.getName());
     8         Method[] method = aClass.getMethods();
     9         for (int i=0;i<method.length;i++){
    10             System.out.printf(method[i].getReturnType()+"                   ");
    11             System.out.printf(method[i].getName()+"(");
    12             Class[] parameterTypes = method[i].getParameterTypes();
    13             int i1=0;
    14             for (Class s: parameterTypes) {
    15                 if (i1==0){
    16                     System.out.printf(s.getTypeName());
    17                     i1=1;
    18                 }else {
    19                     System.out.printf("," + s.getTypeName());
    20                 }
    21             }
    22             System.out.printf(")");
    23             System.out.println("");
    24         }
    25     }
    26 }

      2.调用该方法并运行

    1 public class Office1 {
    2     public static void main(String[] args) {
    3        int i=0;
    4         Class integerClass = int.class;
    5         ClassUtil.getClassMethodsName(i);
    6     }
    7 }

      3.运行结果

     二 通过反射获取类属性(String int List 实体类)并动态赋值.

    public static void main(String[] args) {
            DogEntity dogEntity = new DogEntity();
            GetProperties(dogEntity);
        }
    
        public static void GetProperties(Object o){
            try {
                List<String> list=new ArrayList<>();
                list.add("HELLO");
                Field[] fields = o.getClass().getDeclaredFields();
                Object as="23";
                for (Field f :
                        fields) {
                    System.out.printf(f.getType().getName()); //获取属性类型
                    System.out.printf("_______");
                    System.out.printf(f.getName());  //获取属性名称
                    System.out.println("");
                    f.setAccessible(true);  //不设置语句检查,可获取类私有属性.
                    if (f.getType().getName().equals("java.lang.String")){  //判断反射过来的属性类型,将数据源赋值,这编几个数据
                        f.set(o,as);
                    }else if (f.getType().getName().contains("int")){
                        f.set(o,112);
                    }else if (f.getType().getName().contains("Date")){
                        f.set(o,new Date());
                    }else if (f.getType().getName().contains("List")){
                        list.add("LIST!!!!!!!!!");
                        f.set(o,list);
                    }else {
                        Class c1 = Class.forName(f.getType().getName());  //获取属性值为对象(实体类)的情况
                        Field name = c1.getDeclaredField("name");
                        Object o1=c1.newInstance();
                        name.set(o1,"Cat_Name!!!");
                        f.set(o,o1);
                    }
                    //o.getClass().getDeclaredField(f.getName()).set(o,as);
                    //list.add(f.toString());
                    System.out.print("__________");
                    System.out.println(f.toString());
                }
                System.out.printf("Debug!!!!!!");
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }

      2.运行结果

  • 相关阅读:
    vue 3.0 项目搭建移动端 (七) 安装Vant
    vue 3.0 项目搭建移动端 (六) 命名路由同级控制
    vue 3.0 项目搭建移动端 (五) 没有配合webpack的情况下 引入 sass
    vue 3.0 项目搭建移动端 (四) 全局路由拦截 vue-router beforeEach
    移动端触屏滑动touches使用
    滑动时候警告:Unable to preventDefault inside passive event listener
    如何在同一台电脑上使用两个github账户(亲测有效)
    [转]GitHub上优秀的Go开源项目
    Github+HEXO FATAL bad indentation of a mapping entry at line 84
    eclipse在线安装jd反编译插件
  • 原文地址:https://www.cnblogs.com/chenqiwei/p/RunWsh_630JAVA02.html
Copyright © 2011-2022 走看看