【问题标题】:Meanings of dollar sign in Java method descriptor?Java方法描述符中美元符号的含义?
【发布时间】:2011-11-26 13:09:58
【问题描述】:

例如,它是 Jikes RVM 堆栈的一部分。

at [0x70cfba90, 0x708cfaa4] Lorg/apache/lucene/index/SegmentInfos; 
       **access$000**(Ljava/lang/String;)V
at [0x70cfbb04, 0x708b55c8] Lorg/apache/lucene/index/SegmentInfos$
       FindSegmentsFile; run()Ljava/lang/Object; at line 554
at [0x70cfbb24, 0x708c4a8d] Lorg/apache/lucene/index/SegmentInfos; 
       read(Lorg/apache/lucene/store/Directory;)V at line 272

'access' 应该是一个方法名。但是我检查了类源代码及其接口,那里没有称为“访问”的方法。我在谷歌上找不到答案,因为谷歌讨厌各种标点符号。任何人都可以在这里帮忙吗?非常感谢。

【问题讨论】:

标签: java descriptor dollar-sign


【解决方案1】:

引用自@birryree链接的article

一个类 C 的私有成员 m 可以被另一个类 D 使用,如果一个类包围另一个类,或者如果它们被一个公共类包围。由于虚拟机不知道这种分组,编译器在 C 中创建访问方法的本地协议,以允许 D 读取、写入或调用成员 m。这些方法的名称形式为 access$0、access$1 等。它们从不公开。访问方法的独特之处在于它们可以添加到封闭类,而不仅仅是内部类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多