设为首页 加入收藏

TOP

Java反射机制实例(二)
2014-11-23 19:56:36 来源: 作者: 【 】 浏览:46
Tags:Java 反射 机制 实例
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


// 反射例子5 获取类的成员变量
/**
*   了解了构造器,其实你可以猜到成员变量的获取方法了,成员变量用Field类进行封装。 主要的方法非常的类似: public Field
* getDeclaredField(String name) 获取任意指定名字的成员 public Field[]
* getDeclaredFields() 获取所有的成员变量 public Field getField(String name)
* 获取任意public成员变量 public Field[] getFields() 获取所有的public成员变量
*/
try {
Field field1 = cls2.getDeclaredField("type");// 参数是字段名
field1.setAccessible(true);
Object object1 = field1.get(role2);// 参数是实例化的类
Object object2 = field1.get(role4);// 参数是实例化的类
System.out.println("=========反射例子之5===========");
System.out.println(object1);
System.out.println(object2);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


// 反射例子6 方法 --方法
/**
* public Method[] getMethods() 获取所有的公有方法的集合 public Method
* getMethod(String name,Class< >... parameterTypes) 获取指定公有方法 参数1:方法名
* 参数2:参数类型集合 public Method[] getDeclaredMethods() 获取所有的方法 public Method
* getDeclaredMethod(String name,Class< >... parameterTypes) 获取任意指定方法
* 无参的时候我们只要传null就行了。
*/
try {
Method method1 = cls2.getDeclaredMethod("setName",
new Class[] { String.class });
method1.setAccessible(true);
method1.invoke(role2, "私有的我也可以用");
Method method2 = cls2.getMethod("getName", null);
Object invoke = method2.invoke(role2, null);//非静态方法第一个参数 不能为空
System.out.println("==========反射例子之6==========");
System.out.println(invoke);


} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 无参的时候我们只要传null就行了。
catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


// 反射例子7 方法 --静态方法和字段,
Method method3;
try {
method3 = cls2.getDeclaredMethod("getInstance",
null);
method3.setAccessible(true);
Object invoke = method3.invoke(null, null);//记住与普通方法不同,第一个参数是null(不过貌似不为空,好像也没事)
if(invoke instanceof Role) {
System.out.println("实例化成功");
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


//内部类神马的 ---后续加上
}


}


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PHP常用函数集锦 下一篇Linux下用C实现Ping监测与HTTP报..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: