java反射理解

1、创建Class对象:

1、UserBean类:

package com.example.demo.entity;

public class UserBean {

    private long userId;

    private String name;

    public UserBean(long userId, String name) {
        this.userId = userId;
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public long getUserId(){
        return userId;
    }

    public static void staticMethod(String devName){
        System.out.println("I m a static method,"+devName);

    }

    public void publicMethod(){
        System.out.println("I m a public method!");
    }

    private void privateMethod(){
        System.out.println("I m a private method!");
    }
}

2、创建Class对象:

Class userBeanClass = UserBean.class;

3、获取成员变量:

        //获取成员变量
        Field[] fields = userBeanClass.getDeclaredFields();
        for (Field field : fields) {
            String fieldString = "";
            fieldString += Modifier.toString(field.getModifiers()) + " "; // `private`
            fieldString += field.getType().getSimpleName() + " "; // `String`
            fieldString += field.getName(); // `userName`
            fieldString += ";";
            System.out.println(fieldString);
        }

4、获取成员方法:

//获取成员方法
        Method[] methods = userBeanClass.getDeclaredMethods();
        for (Method method : methods) {
            String methodString = Modifier.toString(method.getModifiers()) + " "; // private static
            methodString += method.getReturnType().getSimpleName() + " "; // void
            methodString += method.getName() + "("; // staticMethod
            String cb = method.getName();
            Class[] parameters = method.getParameterTypes();
            for (Class parameter : parameters) {
                methodString += parameter.getSimpleName() + " "; // String
            }
            methodString += ")";
            System.out.println(methodString);
        }

5、获取构造函数:

//获取构造函数
Constructor[] constructors = userBeanClass.getDeclaredConstructors();
for (Constructor constructor : constructors) {
    String s = Modifier.toString(constructor.getModifiers()) + " ";
    s += constructor.getName() + "(";
    Class[] parameters = constructor.getParameterTypes();
    for (Class parameter : parameters) {
        s += parameter.getSimpleName() + ", ";
    }
    s += ")";
    System.out.println(s);
}

猜你喜欢

转载自www.cnblogs.com/aibaiyang/p/9118863.html