9

たとえば、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' はメソッド名である必要があります。しかし、クラスのソース コードとそのインターフェイスを確認したところ、「アクセス」と呼ばれるメソッドはありませんでした。Google はあらゆる種類の句読点を嫌うため、Google で答えを見つけることができませんでした。誰でもここで助けることができますか?どうもありがとう。

4

1 に答える 1

11

@birryreeによってリンクされた記事から引用:

クラス C のプライベート メンバー m は、あるクラスが別のクラスを囲んでいる場合、またはそれらが共通のクラスによって囲まれている場合、別のクラス D によって使用される可能性があります。仮想マシンはこの種のグループ化を認識しないため、コンパイラは C でアクセス メソッドのローカル プロトコルを作成し、D がメンバー m の読み取り、書き込み、または呼び出しを行えるようにします。これらのメソッドには、access$0、access$1 などの形式の名前が付けられています。公開されることはありません。アクセス メソッドは、内部クラスだけでなく、外側のクラスにも追加できるという点で独特です。

于 2011-09-28T05:40:15.267 に答える