• 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)获取指定的构造方法 

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

  • 相关阅读:
    JDBC的简单使用
    IO流知识点总结
    使用IO流实现一个简单的小Dome
    java编程实现日历
    如何用Java实现DVD的一些功能
    java 入门学习
    在mac电脑上创建java的一些简单操作
    Java Struts框架的一些问答面试题
    分层开发的思想
    JDBC连接数据库
  • 原文地址:https://www.cnblogs.com/javalbb/p/12745982.html
Copyright © 2020-2023  润新知