通过反射机制访问某类的构造器

来源:互联网 发布:徐州管家婆软件 编辑:程序博客网 时间:2024/06/12 19:43

共有三种访问方法:

  1. 通过Class类对象调用newInstance()方法,可以访问某类的无参构造器;
  2. 通过Class类对象调用getConstructor()方法,可以获得某类的无参构造器;
  3. 通过Class类对象调用getConstructor(类参数)方法,可以获得某类的有参构造器(调用有参构造方法时依据方法签名来区别构造方法,传入的参数顺序不同会有不同的调用结果);
    例子:通过反射机制访问构造器。
package com.cx.reflection;import java.lang.reflect.Constructor;class A {    private int x;    private String s;    public A() {        System.out.println("无参构造");    }    public A(int x) {        this.x = x;        System.out.println("有参构造(int)");    }    public A(int x, String s) {        this.x = x;        this.s = s;        System.out.println("有参构造(int, String)");    }    public A(String s, int x) {        this.x = x;        this.s = s;        System.out.println("有参构造(String, int)");    }    public String getS() {        return s;    }    public void setS(String s) {        this.s = s;    }    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }}public class TestClass {    public static void main(String[] args) throws Exception {        Class<?> c = Class.forName("com.cx.reflection.A");        A a = (A) c.newInstance();        System.out.println(a);        Constructor<?> constructor = c.getConstructor();        a = (A) constructor.newInstance();        System.out.println(a);        constructor = c.getConstructor(int.class);        a = (A) constructor.newInstance(100);        System.out.println(a);        constructor = c.getConstructor(int.class, String.class);        a = (A) constructor.newInstance(100, "cx");        System.out.println(a.getX() + ", " + a.getS());        constructor = c.getConstructor(String.class, int.class);        a = (A) constructor.newInstance("cx", 100);        System.out.println(a.getX() + ", " + a.getS());    }}
阅读全文
0 0