黑马程序员技术交流社区
标题:
3种获取字节码的方式都该在什么时候用
[打印本页]
作者:
.Mr
时间:
2014-5-22 19:23
标题:
3种获取字节码的方式都该在什么时候用
本帖最后由 .Mr 于 2014-5-23 14:00 编辑
比如说这里,已知Test这个类,需要使用反射手段创建该类的对象, 并调用该对象中的方法。
class Test {
public void show() {
System.out.println("调用方法啦");
}
}
我这里是这种写法:
public static void main(String[] args) {
Class<Test> clazz = Test.class;// 获取Test类的字节码,其他2种方式也行,那具体什么情况用呢?
Test test = clazz.newInstance();
// 判断获得名为show的方法和参数的个数并调用
Method[] methods = clazz.getMethods();
for (Method method : methods) { //这里我获取到方法,我感觉可以直接调用,不需要判断;什么情况下,我该去遍历判断
Class[] c = method.getParameterTypes();
if (method.getName().equals("show")) {
if (c.length == 0)
method.invoke(test);
}
}
}
作者:
朱晓盼
时间:
2014-5-22 20:30
本帖最后由 朱晓盼 于 2014-5-22 23:09 编辑
俺觉得吧,临场发挥才是王道,具体情况具体对待,这样说可能比较空泛,
下面是我在张老师总结的基础上加上的东西,希望对你有帮助。:)
/----------------------------------------------------------------------------/
获取字节码对应的实例对象的三种方法:
1.类名.class,例如,System.class
通常用于获取已知类或者类型的.class文件
2.对象.getClass(),例如,new Date().getClass()
通常用于获取自定义对象的.class文件
方法所属类:
|--java.lang.Object
|--|--class<?> getClass() 返回object的运行时类
3.Class.forName("类名"),例如,Class.forName("java.util.Date")
通常用于获取API文档中的.class文件
方法所属类:
|--java.lang.Class
|--|--static Class<?> forName(String className) 返回与带有给定字符串名的类或接口相关联的 Class 对象。
/-------------------------------------------------------------------------------------------------------------------------------/
有不同意见希望补充:handshake
作者:
.Mr
时间:
2014-5-23 13:59
朱晓盼 发表于 2014-5-22 20:30
俺觉得吧,临场发挥才是王道,具体情况具体对待,这样说可能比较空泛,
下面是我在张老师总结的基础上加上 ...
谢谢啦,清晰明了
作者:
DxxD
时间:
2015-3-27 10:41
。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2