Class类与Java反射《java从入门到精通》第十六章

目的:理解属性拷贝工具类(根据类的class对象获取类的对象:利用反射获取类的对象)

/**
     * @description: 对象属性拷贝 转化
     * @param source
     * @param destinationClass
     * @return T
     */
    public static <T> T copyProperties(Object source, Class<T> destinationClass) {
        if (null == source) {
            return null;
        }
        T t = null;
        try {
            /**
             * 主要就是为了理解这一句:
             * getDeclaredConstructor获取指定的构造方法(这里获取的是无参构造)对象
             * newInstance获取类的对象
             */
            t = destinationClass.getDeclaredConstructor().newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (t != null) {
            BeanUtils.copyProperties(source, t);
        }
        return t;
    }

概念

利用反射获取类的构造方法,从而获取类的对象

类:Constructor

注释:构造方法类

继承关系

public final class Constructor<T> extends Executable 
public abstract class Executable extends AccessibleObject implements Member, GenericDeclaration
//其中AccessibleObject 类的方法,获取操作权限,可以获取类的私有的构造方法(通过new获取的对象,无法访问私有属性)
public void setAccessible(boolean flag) throws SecurityException

位置 java.lang.reflect.Constructor;

常用方法摘要

public int getModifiers()  获取构造方法的修饰符(返回值是int,Modifier类toString(int mod)方法可以获取到修饰符具体看源码

public String getName()   获取构造方法的名称

public Class<?>[] getParameterTypes() 获取构造方法的参数类型

public T newInstance(Object ... initargs)  获取类的对象

类:Class

public final class Class<T>

常用方法摘要

获取类的构造方法对象(Constructor对象)4

public Constructor<?>[] getConstructors() 获取所有公有的构造方法

public Constructor<T> getConstructor(Class<?>... parameterTypes) 获取指定的公有的构造方法(参数为构造方法的参数的类型)

public Constructor<?>[] getDeclaredConstructors() 获取所有的构造方法

public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)获取指定的构造方法 

 

利用反射获取类的成员变量,方法(贴图,遇到代码再来看)

 

posted @ 2020-04-21 17:16  createcoc  阅读(193)  评论(0编辑  收藏  举报