java中“类名.class”的具体意义及用法

wangydong 2008-12-17 09:38:26
最近在看nutch源码,代码中大量的运用了“类名.class”,大都是把nutch中定义的类作为参数传给了hadoop中的方法,所以也看不到hadoop中是怎么用这些类参数的,
我想问的是“类名.class”得到的是类本身是吗?并不是类的一个实例,像下面的程序:

JobConf job = new NutchJob(config);
job.setMapperClass(CrawlDbFilter.class);
job.setReducerClass(CrawlDbReducer.class);

CrawlDbFilter和CrawlDbReducer都是类,那么在setMapperClass或setReducerClass中是怎么用这个类的,比如说setMapperClass是这样定义的:

void setMapperClass(Class theClass)
{
...
}
那么在setMapperClass中用theClass时是不还得用他创建一个实例才可用啊,不能直接用theClass,因为它不是一个对象,是这样吗?
...全文
4951 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luojihaidao 2008-12-18
  • 打赏
  • 举报
回复
反射相关知识, 非常重要。可以看看API java.lang.reflect包中。
bzwm 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ZangXT 的回复:]
引用 3 楼 wangydong 的回复:
那可以用 类名.class调用此类中定义的属性和方法吗?

不可以。
[/Quote]
恩,如果要调用的,得需要对象的实例,除非是static方法。

m = class.getMethod("methodname", new class[]{param});

m.invoke(obj, new Object[] { args }); //如果掉哦那个static方法,obj 为null即可。
ZangXT 2008-12-17
  • 打赏
  • 举报
回复
一直想看Hadoop的代码,不过没时间,希望lz多总结点经验,指导一下。
ZangXT 2008-12-17
  • 打赏
  • 举报
回复

public class Main{
public static void main(String[] args) {
System.out.println(Main.class);
Main m = new Main();
Class mainClass = m.getClass();
System.out.println(mainClass);
System.out.println(Main.class==mainClass);
}
}

这样应该能理解这个Main.class是个什么东西了。
ZangXT 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangydong 的回复:]
那可以用 类名.class调用此类中定义的属性和方法吗?
[/Quote]
不可以。
bzwm 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangydong 的回复:]
那可以用 类名.class调用此类中定义的属性和方法吗?
[/Quote]

有了Class这个对象,就可以知道这个类里的信息,
包括类中定义的方法。
wangydong 2008-12-17
  • 打赏
  • 举报
回复
那可以用 类名.class调用此类中定义的属性和方法吗?
jasonchain 2008-12-17
  • 打赏
  • 举报
回复
Class是对某个类的描述

当虚拟机载入某个class文件时,首先生成该class文件对应的类的Class对象,这个对象描述类
树成 2008-12-17
  • 打赏
  • 举报
回复
你还没有接触过反射吧,类名.class是获得这个类所对应的Class实例。
从面向对象的角度上来看,类也是对象,它们是类这个类对象,听起来有些抽象,但是在java中的实现就是所有的加载进来的类在虚拟机中都是一个java.lang.Class类的对象,而“类名.class”就是获得这个类的对象(在同一个ClassLoader中,类对象都是单例的)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧