• getConstructor、getDeclaredConstructor区别


    getConstructor、getDeclaredConstructor区别

    getDeclaredConstructor:返回指定参数类型、所有声明的(包括private)构造函数

    getConstructor:返回指定参数类型、具有public访问权限的构造函数

    1、 

       /**

         * Returns a Constructor object which represents the constructor matching the given parameter types that is declared by the class represented by this Class.
         * Class[] null is equivalent to the empty array.
         */
        @SuppressWarnings("unchecked")

        public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

    2、

        /**
         * Returns a Constructor object which represents the public constructormatching the given parameter types.
         * Class[] null is equivalent to the empty array.
         *
         * Use getDeclaredConstructor if you don't want to search superclasses.
         */
        @SuppressWarnings("unchecked")
        public Constructor<T> getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException

    getDeclaredConstructor:返回指定参数类型、所有声明的(包括private)构造函数

    getConstructor:返回指定参数类型、具有public访问权限的构造函数

    Class中,有其他类似方法。

    反射获取private构造方法

    package com.test;

    A {

        private String str;

        public A() { str = "first";   }

        private A(String str) { this.str = str; }

        public String getStr() { return str;  }

    }

    void main(String[] args) {

        Class cls = Class.forName("com.test.A");

        Class[] paramsType = { String.class };

        Object[] params = { "second" };

        Constructor con = cls.getDeclaredConstructor(paramsType);

        con.setAccessible(true);

        A a = (A)con.newinstanct(params);

        a.getStr();// second

    }

  • 相关阅读:
    【C++】Lambda表达式
    使用velodyne16线激光雷达跑loam-velodyne
    IMU(LPMS-B2) ROS下使用教程
    【C++】关键字inline
    OpenCV中feature2D——BFMatcher和FlannBasedMatcher
    CUDA 编程
    进程(process)和线程(thread)的区别
    【C++】源自指针的报错
    【C++】如何接收函数return返回来的数组元素
    远程访问服务器tensorboard
  • 原文地址:https://www.cnblogs.com/handsome1013/p/7411559.html
Copyright © 2020-2023  润新知