zoukankan      html  css  js  c++  java
  • Java反射(4)获取构造方法

    我们通常使用new操作符创建新的实例:

    Person p = new Person();
    

    如果通过反射来创建新的实例,可以调用Class提供的newInstance()方法:

    Person p = Person.class.newInstance();
    

    调用Class.newInstance()的局限是,它只能调用该类的public无参数构造方法。
    如果构造方法带有参数,或者不是public,就无法直接通过Class.newInstance()来调用。
    为了调用任意的构造方法,Java的反射API提供了Constructor对象,它包含一个构造方法的所有信息,可以创建一个实例。
    Constructor对象和Method非常类似,不同之处仅在于它是一个构造方法,并且,调用结果总是返回实例.示例如下

    public class Main {
        public static void main(String[] args) throws Exception {
            // 获取构造方法Integer(int):
            Constructor cons1 = Integer.class.getConstructor(int.class);
            // 调用构造方法:
            Integer n1 = (Integer) cons1.newInstance(123);
            System.out.println(n1);
    
            // 获取构造方法Integer(String)
            Constructor cons2 = Integer.class.getConstructor(String.class);
            Integer n2 = (Integer) cons2.newInstance("456");
            System.out.println(n2);
        }
    }
    

    通过Class实例获取Constructor的方法总结如下:

    • getConstructor(Class...):获取某个public的Constructor;//
    • getDeclaredConstructor(Class...):获取某个Constructor;
    • getConstructors():获取所有public的Constructor;
    • getDeclaredConstructors():获取所有Constructor。
  • 相关阅读:
    浏览器extension
    windows 下使用免安装版的mysql
    windows下好用的工具
    那些没来得及做的事
    OSI模型的一张图
    倒计时输出脚本
    selenium忽略链接不安全页面提示的方法
    selenium控制浏览器滚动条缓慢下拉到最底
    paramiko连接主机基本操作
    django点击前端按钮展示后台列表
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/12716979.html
Copyright © 2011-2022 走看看