黑马程序员技术交流社区
标题:
反射 获取构造方法
[打印本页]
作者:
fmi110
时间:
2015-9-21 10:53
标题:
反射 获取构造方法
a
package demo.reflect;
import java.lang.reflect.Constructor;
public class Test {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// 通过反射获取字节码文件对象
Class c = Class.forName("demo.reflect.People");
//获取构造函数,所有声明的构造函数
Constructor[] cons = c.getDeclaredConstructors();
for(Constructor con :cons)
System.out.println(c.getPackage()+"..."+con);
//通过构造函数创建新的实例
Constructor con = c.getDeclaredConstructor();
People p = (People)con.newInstance();
System.out.println(p);
//带参的构造函数构造实例
Constructor con1 = c.getDeclaredConstructor(String.class,int.class);
People p1 = (People)con1.newInstance("Lily",18);
System.out.println(p1);
Constructor con2 = c.getDeclaredConstructor(String.class,int.class,String.class);
con2.setAccessible(true);//用私有的构造函数时,需要取消语言检查
People p2 = (People)con2.newInstance("Lily",18,"来宾");
System.out.println(p2);
}
}
复制代码
作者:
fmi110
时间:
2015-9-21 11:25
a
package demo.reflect;
public class People {
/**
* 用于反射演示的类
*/
private String name;
private int age;
public String address;
public People() {
}
//修饰符不同
People(String name, int age) {
this.name = name;
this.age = age;
}
private People(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public void show() {
System.out.println("show~~");
}
public void method(String s) {
System.out.println("method" + s);
}
@Override
public String toString() {
return "People [name=" + name + ", age=" + age + ", address=" + address
+ "]";
}
}
复制代码
作者:
fmi110
时间:
2015-9-21 12:21
a
package demo.reflect...private demo.reflect.People(java.lang.String,int,java.lang.String)
package demo.reflect...demo.reflect.People(java.lang.String,int)
package demo.reflect...public demo.reflect.People()
People [name=null, age=0, address=null]
People [name=Lily, age=18, address=null]
People [name=Lily, age=18, address=来宾]
复制代码
作者:
水果牛牛
时间:
2015-9-21 12:26
学习了,很详细
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2