看一些开源的项目中
很多地方都以Class对象作为方法的参数
如:
void f(Class c)
然后在f中用c来生成类的对象再使用
这样做有什么好处呢?
比直接传一个普通的对象相比有什么好处?
不知表达清楚没有
谢谢!
很多地方都以Class对象作为方法的参数
如:
void f(Class c)
然后在f中用c来生成类的对象再使用
这样做有什么好处呢?
比直接传一个普通的对象相比有什么好处?
不知表达清楚没有
谢谢!
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等等