0
点赞
收藏
分享

微信扫一扫

110.反射之构造方法简介;通过Class类对象获取构造方法

mm_tang 2022-01-28 阅读 70

反射之构造方法简介

构造方法在调用的过程中首先会受到权限修饰符的约束,如果是public,类外也可以通过构造方法创建对应的类对象,如果是私有化的构造方法,只能在类内的方法中调用该构造方法,但是构造方法选择和【参数】有直接关系,而构造方法的名字是固定的,就是当前的类名;构造方法是依赖,参数类型区分的;根据参数的类型,个数,顺序来选择执行对应的构造方法;

通过Class类对象获取构造方法

例如:

class Panda{
    public static void main(String[] args) throws NoSuchMethodException {
        //首先创建Class类对象
        Class classTest = Test.class;
        //通过Class类对象获取Test类的构造方法
        //获取Class类对象内所有的非私有化构造方法类对象数组
        Constructor[] constructors = classTest.getConstructors();
        //获取Class类对象内所有的构造方法类对象数组【包括私有化】【暴力反射】
        Constructor[] constructors1 = classTest.getDeclaredConstructors();
        //获取Class类对象指定参数类型,顺序,个数的非私有化构造方法Constructor类对象
        //获取Test类的有三个参数的构造方法,传入参数应该是String.class,Integer.class,String.class
        Constructor constructor = classTest.getConstructor(String.class,Integer.class,String.class);
        //获取Test类没有参数的构造方法
        Constructor constructor1 = classTest.getConstructor();
        //获取Class类对象内任意指定类型的构造方法,包括【私有化构造方法】【暴力反射】
        Constructor constructor2 = classTest.getDeclaredConstructor(String.class,Integer.class);
    }
}

@Data
public class Test{
    //成员变量
    private String name;
    private Integer age;
    private String sex;

    //无参构造方法
    public Test(){}
    //有参构造方法
    public Test(String name,Integer age,String sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    private Test(String name, Integer age){
        this.name = name;
        this.age = age;
    }
}
举报

相关推荐

0 条评论