0
getstatic
の形式は次のとおりです。getstatic <spec-field> <descriptor>
spec-field
は、われわれが望むフィールドです。しかし、なぜdescriptor
が必要ですか?jvmのGetstatic
getstatic
の形式は次のとおりです。getstatic <spec-field> <descriptor>
spec-field
は、われわれが望むフィールドです。しかし、なぜdescriptor
が必要ですか?jvmのGetstatic
getfield
/getstatic
バイトコードは、処理するフィールドのタイプを何とか指定する必要があります。フィールドは名前と型のペアで識別されるため、型は明白になります。さもなければ、異なるフィールドタイプに対して異なるバイトコードが必要となる。A
クラスB
のf
フィールドを参照するとします。名前と記述子でフィールドをアドレス指定する方法では、f
のタイプが変更され、B
クラスがA
から独立して再コンパイルされると、いくつかの問題が解決されます。
原則として、新しいバイトコードを導入する必要なしに、フィールドのタイプを推論することができます。しかし、これは、フィールドアクセスを含むコードを検証するには、フィールドの型を取得するために、フィールドの所有者クラスをロードしなければならないことを意味します。今のように、コードの正しさはリンケージの前に確認することができます。 – Holger