网站建设销售如何接单,wordpress插件没有效果,代理服务器ip免费,WordPress实现网址导航Java反射 Constructor类
Java通过反射可以获取构造方法#xff0c;和使用构造方法创造对象。
在网上找了一个比较好理解的例子来弄清楚Constructor类。
public Constructor getConstructor()// 公共构造方法对象
public Constructor[] getConstructors()//所有公共构造方法…Java反射 Constructor类
Java通过反射可以获取构造方法和使用构造方法创造对象。
在网上找了一个比较好理解的例子来弄清楚Constructor类。
public Constructor getConstructor()// 公共构造方法对象
public Constructor[] getConstructors()//所有公共构造方法对象
public Constructor[] getDeclaredConstructors()//所有构造方法对象
public Constructor getDeclaredConstructor()//获取私有构造方法对象
public ConstructorT getConstructor(Class?... parameterTypes)// 参数表示的是你要获取的构造方法的构造参数个数及数据类型的class字节码文件对象
public void setAccessible(boolean flag)// 值为true则指示反射的对象在使用时应该取消Java语言访问检查。 暴力访问
package fieldtest;public class Student {// 成员变量public String name;// 公共private int age;// 私有// 构造方法public Student() {super();// TODO Auto-generated constructor stub}// 私有构造方法private Student(String name) {this.name name;}public Student(String name, int age) {super();this.name name;this.age age;}// 成员方法(getXxx/setXxx)public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}// 成员方法public void study() {System.out.println(我爱学习java);}// 私有private void study(String string) {System.out.println(我还爱学习 string);}Overridepublic String toString() {return Student [name name , age age ];}
}
import java.lang.reflect.Constructor;public class ConstructorDemo {public static void main(String[] args) throws Exception {// 获取字节码文件对象Class c Class.forName(fieldtest.Student);// 获取所有构造方法Constructor[] cons c.getDeclaredConstructors();for (Constructor con : cons) {System.out.println(con);}// 获取单个构造方法Constructor con c.getConstructor();// 返回的是构造方法对象Constructor con1 c.getConstructor(String.class, int.class);// 返回的是有参构造方法对象Constructor con2 c.getDeclaredConstructor(String.class);// 创建对象Object obj con.newInstance();//使用无参构造方法创建对象Object obj1 con1.newInstance(x, 1);// 暴力访问con2.setAccessible(true);// 值为true则指示反射的对象在使用时应该取消Java语言访问检查。Object obj2 con2.newInstance(y);System.out.println(obj.toString());System.out.println(obj1.toString());System.out.println(obj2.toString());}
}/*输出
public fieldtest.Student(java.lang.String,int)
private fieldtest.Student(java.lang.String)
public fieldtest.Student()
Student [namenull, age0]
Student [namex, age1]
Student [namey, age0]*/通过例子可以总结
使用反射机制创建对象步骤 获得指定类的Class类对象。 Class c Class.forName(fieldtest.Student); 通过反射获取指定参数类型的Constructor类对象。 Constructor con1 c.getConstructor(String.class, int.class); 调Constructor类对象的newInstance()方法传入对应参数值创建对象。 Object obj1 con1.newInstance(x, 1);
例子2
import java.lang.reflect.*;
public class ClassObj {public static void main(String[] args) {try {Class c5 Class.forName(java.lang.Integer);//在类中首先获得指定类的Class类对象Constructor construct c5.getConstructor(int.class);//通过Class类对象的getConstructor获得指定符合参数类型的构造方法。Integer in (Integer) construct.newInstance(1234);//通过constructor类对象的newInstance()方法传入参数创建对象in。System.out.println(in.toString());}catch(Exception e) {e.printStackTrace();}}
}
//输出1234
/*
Integer的toString()源码private final int value;public Integer(int value) {this.value value;
}
public String toString() {return toString(value);
}
*/一些例子代码参考自https://www.jb51.net/article/171123.htm