类在解析过程中是否会将NameAndType的常量引用也解析呢?

chenjingbo 2011-08-02

Constant pool:
   #1 = Methodref          #4.#15         //
   #2 = Fieldref           #3.#16         //
   #3 = Class              #17            //
   #4 = Class              #18            //
   #5 = Utf8               m
   #6 = Utf8               I
   #7 = Utf8               <init>
   #8 = Utf8               ()V
   #9 = Utf8               Code
  #10 = Utf8               LineNumberTable
  #11 = Utf8               inc
  #12 = Utf8               ()I
  #13 = Utf8               SourceFile
  #14 = Utf8               Test.java
  #15 = NameAndType        #7:#8          //
  #16 = NameAndType        #5:#6          //
  #17 = Utf8               Test
  #18 = Utf8               java/lang/Object

 

比如上面的常量池, #15 #16的符号引用也是在解析阶段完成的呢??

求教.谢谢.

RednaxelaFX 2011-08-02
我印象中JVM规范里没规定NameAndType什么时候要resolve成直接引用。

HotSpot VM的实现的话,NameAndType并没有单独的、特别的处理。在最初对Class文件做parse的时候存下来的信息跟在Class文件里差不多一样,就是一个tag和两个字段,两个字段都是常量池索引,指向另两个Utf8常量。
真正需要在resolve后换成直接引用的是Class/Methodref/Fieldref之类的。它们会引用NameAndType,但resolve完了之后NameAndType其实就没啥用了。
chenjingbo 2011-08-02
谢谢撒迦..
Global site tag (gtag.js) - Google Analytics