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。
  • 相关阅读:
    iOS开发tips-UITableView、UICollectionView行高/尺寸自适应
    10559
    日志系统之基于Zookeeper的分布式协同设计
    IOS 图片上传处理 图片压缩 图片处理
    istream, outstream使用及常见错误
    matlab 扩大虚拟内存
    github不小心同步覆盖了本地文件
    经典统计语言模型
    Makefile 快速入门
    word2vec——高效word特征提取
  • 原文地址:https://www.cnblogs.com/JohnTeslaaa/p/12716979.html
Copyright © 2011-2022 走看看