zoukankan      html  css  js  c++  java
  • 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)获取指定的构造方法 

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

  • 相关阅读:
    IDEA常用快捷指令整理
    Python dict 字典
    内联函数
    【MFC】编辑框 CEdit Ctrl控件自动换行设置
    mysql 多sql文件恢复方案
    Linux: 用64位的系统,能编译32位的程序吗?
    C++ 遍历数组
    工业现场传感器传感器为什么采用电流形式输出?
    【转】电磁阀、电磁铁的工作原理说明
    PCB板强弱电隔离距离不够导致损坏和问题检查记录
  • 原文地址:https://www.cnblogs.com/javalbb/p/12745982.html
Copyright © 2011-2022 走看看