方法的参数用Class对象有什么好处? 看一些开源的项目中很多地方都以Class对象作为方法的参数如:void f(Class c)然后在f中用c来生成类的对象再使用这样做有什么好处呢?比直接传一个普通的对象相比有什么好处?不知表达清楚没有谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 和普通的类型一样呀Class 也是Object呀 也可以这样说假设有类ClassA定义如下两个方法void f1(ClassA a){ a.doSomething();}void f2(Class c){ 首先用c生成一个c对应的类型的对象,假设为a a.doSomething();}调用端如下:ClassA a = new ClassA();f1(a);f2(a.class);这样,f2比f1有哪些好处? sorry应该是f2(ClassA.class); f2(ClassA.class);里面这个ClassA.class是什么东西,ClassA能点出class???? to qiang029(风) 难道ClassA不能点出class????希望大虾指出为什么很多代码中需要使用上述手法?谢谢啊 ClassA.class等价于:static Class $class0 =Class.forName("ClassA");ClassA.$class0 编译器帮你生成了很多代码使用javap 反编译看的很清楚 ClassA a = new ClassA();f1(a);f2(ClassA.class);f2的好处在哪里? 详细讲解一下javap????????????????????最好有个例子........... to codefire(小不懂):谢谢你的回答不过有个地方不明白:“引用的对象的对象一族”是什么意思? 这是为了泛型的目的.对于void f1(ClassA a),限定死了输入参数只能是ClassA类型的对象对于void f2(Class c),你可以传入任何对象的Class,也就是说,这么写表示f2处理的对象可以是所有的Object.至于为什么不写成void f3(Object o),f2的写法,可以更容易的得到c的Class相关信息,比如是否是一个interface,implements了哪几个interface,继承了哪几个类,有哪些field,有哪些method,属于那个package等等 最简单的问题 请问如果让main函数执行时,加载整个目录下的所有jar包 一个JCreator pro的问题? 睡觉的线程怎么停止它? TIJ4就要发布了,有没有对英语比较感兴趣的想一起翻译呀? 判断一个数是否是浮点数的问题 将从JTextField获取的内容作为参数传递时遇到的问题!高分求教高手!(有源码说明) JTest问题,在线等待!!! 在java中如何启动非java的可执行程序? dylanwolf你的程序不行呀!!!执行批处理!(win2k) 请教一个关于向数据库添加数据的问题 求助:成功配置JSP环境后遇到的问题!!
Class 也是Object呀
假设有类ClassA
定义如下两个方法
void f1(ClassA a)
{
a.doSomething();
}
void f2(Class c)
{
首先用c生成一个c对应的类型的对象,假设为a
a.doSomething();
}
调用端如下:
ClassA a = new ClassA();
f1(a);
f2(a.class);这样,f2比f1有哪些好处?
应该是
f2(ClassA.class);
难道ClassA不能点出class????希望大虾指出为什么很多代码中需要使用上述手法?谢谢啊
等价于:
static Class $class0 =Class.forName("ClassA");ClassA.$class0
使用javap 反编译看的很清楚
f1(a);
f2(ClassA.class);f2的好处在哪里?
谢谢你的回答
不过有个地方不明白:“引用的对象的对象一族”是什么意思?
对于void f1(ClassA a),限定死了输入参数只能是ClassA类型的对象
对于void f2(Class c),你可以传入任何对象的Class,也就是说,这么写表示f2处理的对象可以是所有的Object.
至于为什么不写成void f3(Object o),f2的写法,可以更容易的得到c的Class相关信息,比如是否是一个interface,implements了哪几个interface,继承了哪几个类,有哪些field,有哪些method,属于那个package等等