getConstructor、getDeclaredConstructor区别

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

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值