请教高手这个“$”是什么东东呀??急急!!!

chyuping 2003-05-28 05:14:33
static Class class$(String x$0)
……
static Class class$java$lang$Boolean;
这里的$是什么意思呀,这样定义类变量???????
class$java$lang$Boolean是什么呀
还有class$是什么呀???
晕……
...全文
30 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fpwang 2003-05-29
  • 打赏
  • 举报
回复
回复人: kknd97(绝地风暴) 的介绍很详细也很深入
简单来说就是,在JAVA中$是个无意义的字符,可以用来命名JAVA中的标识符(变量名、类名等)
但是有一些没有硬性规定的约定,就是一般含有$字符的标识符都是编译器生成的。
thinkerhj 2003-05-29
  • 打赏
  • 举报
回复
跟你用的反编译工具有关、跟java无关。
司码君 2003-05-29
  • 打赏
  • 举报
回复
是美元啊!!!我想要!!
做梦中................
hayai 2003-05-29
  • 打赏
  • 举报
回复
那是反编译的问题。反编译不够完善。
要看J2SE classes的源代码,JBuilder里有。
不要相信任何反编译,至少我不信。
chyuping 2003-05-29
  • 打赏
  • 举报
回复
static Class class$(String x$0)
……
static Class class$java$lang$Boolean;
这些是我用jad反编译后得到的源码,死活看不懂呀!!!!!
zosatapo 2003-05-29
  • 打赏
  • 举报
回复
: wantvictory(爱就爱到底......) ( ) 信誉:93

你说的那个是RTTI使用的,主要用来分析类的组合结构以及类的继承层次判定。

JAVA里面叫做“反射”或者“自检”。如果你用过MFC,你就是知道了
zosatapo 2003-05-29
  • 打赏
  • 举报
回复
class 的完整名字是包括package名字的,那怎么表示这个类的完整名字呢,SUN就用了上面这个方法的。不要问为什么的,因为已经没有为什么可以问了,也许是人家一时高兴就这样表示了。
Jawan_lee 2003-05-29
  • 打赏
  • 举报
回复
这是inner类的问题
你可以找一本相关的书看一下呢
xyzxyz1111 2003-05-29
  • 打赏
  • 举报
回复
美刀
hoxisoft 2003-05-29
  • 打赏
  • 举报
回复
这个就是所谓的“类中类”了,他都用$表示
wantvictory 2003-05-28
  • 打赏
  • 举报
回复
比如Class class$还有Class class$java$lang$Boolean是什么意思呀
---------------------------------------------------------------
不太清楚,关注,共同学习。。。。
chyuping 2003-05-28
  • 打赏
  • 举报
回复
各位高手:你们解释的是在文件名中有$的情况,可是$在程序代码中是什么意思,比如
Class class$还有Class class$java$lang$Boolean是什么意思呀,还是不明白,think-in-java中的多形性那一章看了,也解释的是最后文件名中的$,这个我明白,可是放到代码里好象不是这个意思????恳请高手再解答!!!
cavalry001 2003-05-28
  • 打赏
  • 举报
回复
think in java中写的很详细,读后之后你就会清楚的
kknd97 2003-05-28
  • 打赏
  • 举报
回复
由于每个类都会生成一个.class文件,用于容纳与如何创建这个类型的对象有关的所有信息(这种信息产生了一个名为Class对象的元类),所以大家或许会猜到内部类也必须生成相应的.class文件,用来容纳与它们的Class对象有关的信息。这些文件或类的名字遵守一种严格的形式:先是封装类的名字,再跟随一个$,再跟随内部类的名字。例如,由InheritInner.java创建的.class文件包括:
InheritInner.class
WithInner$Inner.class
WithInner.class
如果内部类是匿名的,那么编译器会简单地生成数字,把它们作为内部类标识符使用。若内部类嵌套于其他内部类中,则它们的名字简单地追加在一个$以及外部类标识符的后面。
这种生成内部名称的方法除了非常简单和直观以外,也非常“健壮”,可适应大多数场合的要求(注释③)。由于它是Java的标准命名机制,所以产生的文件会自动具备“与平台无关”的能力(注意Java编译器会根据情况改变内部类,使其在不同的平台中能正常工作)。

③:但在另一方面,由于“$”也是Unix外壳的一个元字符,所以有时会在列出.class文件时遇到麻烦。对一家以Unix为基础的公司——Sun——来说,采取这种方案显得有些奇怪。我的猜测是他们根本没有仔细考虑这方面的问题,而是认为我们会将全部注意力自然地放在源码文件上。

希望对你有帮助,具体细节请参看 think-in-java 第7章 多形性


祝你好运!
mouseleeky 2003-05-28
  • 打赏
  • 举报
回复
这个我不太清楚。
不过如果你在类A中定义了一个叫B的类(也就是说B是A的inner class),则生成的.class文件中会有一个叫A$B.class的。

62,614

社区成员

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

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