反射_Class对象功能_获取Constructor

1.Constructor:构造方法
创建对象

  • T newInstance(Object… initargs)
  • 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法

2.获取构造方法们

  • Constructor<?>[] getConstructors()
  • ​ Constructor getConstructor(类<?>…
    parameterTypes)
  • ​ Constructor<?>[] getDeclaredConstructors()
  • ​ Constructor getDeclaredConstructor(类<?>…
    parameterTypes)
package cn.reflect;

import cn.domain.Person;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

public class ReflectDemo3 {
    /**
     *Class对象功能:

     ​      *获取功能:

     ​       1.获取成员变量们

     ​           *Field[]  getFields()
     ​           *Field    getField(String name)

     ​           *Field[]  getDeclaredFields()
     ​           *Field    getDeclaredField(String name)

     ​       2.获取构造方法们

     ​             *Constructor<?>[]   getConstructors()
     ​             *Constructor<T>     getConstructor(类<?>...   parameterTypes)

     ​             *Constructor<?>[]   getDeclaredConstructors()
     ​             *Constructor<T>     getDeclaredConstructor(类<?>...   parameterTypes)

     ​       3.获取成员方法们

     ​             *Method[]    getMethods()
     ​             *Method      getMethod(String name,类<?>...  parameterTypes)

     ​             *Method[]    getDeclaredMethods()
     ​             *Method      getDeclaredMethod(String name,类<?>...  parameterTypes)

     ​      4.获取类名

     ​             *String getName()
     */
    public static void main(String[] args) throws Exception {
        //0.获取Person的Class对象
        Class personClass = Person.class;

        /*
     ​       1.获取构造方法们

     ​             *Constructor<?>[]   getConstructors()
     ​             *Constructor<T>     getConstructor(类<?>...   parameterTypes)

     ​             *Constructor<?>[]   getDeclaredConstructors()
     ​             *Constructor<T>     getDeclaredConstructor(类<?>...   parameterTypes)
         */
       // *Constructor<T>     getConstructor(类<?>...   parameterTypes)
        Constructor constructor = personClass.getConstructor(String.class,int.class);
        System.out.println(constructor);
        //创建对象
        Object person = constructor.newInstance("老张", 27);
        System.out.println(person);

        System.out.println("-------------------------------------");
        //方法空参
        Constructor constructor1 = personClass.getConstructor();
        System.out.println(constructor1);
        //创建对象
        Object person1 = constructor1.newInstance();
        System.out.println(person1);
        //如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
        Object obj = personClass.newInstance();
        System.out.println(obj);

//        constructor1.setAccessible(true); //暴力反射
    }
}

打印结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值