本帖最后由 杨鹏鹏 于 2012-8-24 13:58 编辑
public static void main(String[] args) throws SecurityException, Exception {
// TODO Auto-generated method stub
/* --------------------------- 构造函数 ---------------------------- */
Person p=new Person(); //①这儿用Class.forName("com.itheima.threed1.Reflection")错
Constructor con= p.getClass().getConstructor(int.class,String.class);//有参构造函数
con.setAccessible(true);
Person p1=(Person)con.newInstance(3,"周星驰");
System.out.println(p1.toString());
//System.out.println(p1.name+p1.age);//②出错,The field Person.age is not visible
System.out.println( Person.class.newInstance().toString());//无参构造函数
Constructor[] cons=Person.class.getConstructors();
System.out.println("个数为"+cons.length);
for(Constructor c:cons){
//③怎么判断是否为有参构造函数
//System.out.println(c.newInstance(10,"爱我中华").toString());//出错。
//System.out.println(c.newInstance().toString());//错
}
/* -------- 获取方法 ------------- */
//私有的静态方法
Method m3=Person.class.getDeclaredMethod("getS", String.class);
m3.setAccessible(true);//私有方法
System.out.println( m3.invoke(null, "你好,我也好"));//④你好,我也好 null(这个null怎么来滴)
}
}
class Person
{
public Person() {
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
private int age=10;
public String name="张三";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void getArrays(int[] i){
for(Integer a:i){
System.out.println(a);
}
}
@Override
public String toString(){
return name+"哈哈,找到我了"+age;
}
private static void getS(String a){
System.out.println(a);
}
}
①处用Class.forName("com.itheima.threed1.Reflection") 读不到数据?
② 处 无法读取private 变量 尽管 con.setAccessible(true);?
③怎么判断是否为有参构造函数 ?
④你好,我也好 null(这个null怎么来滴) ?
|
|