首页 > 其他 > 详细

反射方式获取构造方法并使用

时间:2021-01-20 09:35:48      阅读:31      评论:0      收藏:0      [点我收藏+]

反射方式获取构造方法并使用

Constructor<T>对象

构造器对象,属于java.base模块,java.lang.reflect包中

技术分享图片

 

 

  • getConstructor(Class <?>... parameterType)
        //返回公共构造方法
    

      

  • getDeclaredConstructor(Class <?>... parameterType)
        //返回私有构造方法
    

      

  • getConstructors()
        //返回所有构造方法,但不包括私有狗杂方法
    

      

Constructor的常用方法

String getName()
    //返回构造方法名

  

T newinstance(Object... initargs)
    //使用此构造函数和指定参数创建并初始化对象

  

构造方法的使用举例

Student.java

package Demo01;
?
import java.lang.reflect.Constructor;
?
?
/**
 * @author :K;
 */
public class Student {
?
    public Student() {
?
    }
    public Student(String name){
        System.out.println("输入的姓名为:"+name);
    }
    private Student(int age){
        System.out.println("你的年龄为:"+age);
    }
}

  


?

Reflect_GetConstructor.java

package Demo01;
?
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
?
public class Reflect_GetConstructor {
?
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
            //1.获取Student类的字节码文件对象
            //2.根据字节码文件对象,获取指定的构造器对象
            //3.根据构造器对象和参数,创建对应的Student对象
        Class aClass = Class.forName("Demo01.Student");
        System.out.println(aClass.getName());
?
            //获取公共的无参构造
        Constructor constructor01 = aClass.getConstructor();
        System.out.println(constructor01);
            //获得公共的有参构造
        Constructor constructor02 = aClass.getConstructor(String.class);
        System.out.println(constructor02);
            //获取私有的有参构造
        Constructor declaredConstructor = aClass.getDeclaredConstructor(int.class);
        System.out.println(declaredConstructor);
?
            //获取所有的构造方法,除去私有的构造方法
        Constructor[] constructors = aClass.getConstructors();
        for(Constructor constructor:constructors){
            System.out.println(constructor);
        }
        System.out.println("-------------");
            //构造器对象
        System.out.println(constructor01);
        String name = constructor01.getName();
            //构造器的名字
        System.out.println(name);
            //根据构造器对象和参数,创建对应的Student对象
        Student stu = (Student) constructor02.newInstance("李白");
            //打印输出结果
        System.out.println(stu);
?
    }
}

  


?

 

反射方式获取构造方法并使用

原文:https://www.cnblogs.com/kkwt/p/14300812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!