0

定数プールがいくつかの ConstantUtf8 データで構成されている Java クラス ファイルがあり
75. CONSTANT_Utf8 : SampleString
95. CONSTANT_Utf8 : SampleString
、異なるインデックス上の同じデータを意味します。次のコードを記述しました。

ConstantPoolGen cp = classGen.getConstantPool();
    int a = cp.lookupUtf8("SampleString");
    if(a != -1)
    {    
        cp.setConstant(a, new ConstantUtf8("OtherString"));
        System.out.println("Found and Replaced");  
    }
    else
    {
        System.out.println("Not Found!");
    }

上記のコードは、インデックス 95 で "SampleString" を "OtherString" に置き換えますが、すべての出現箇所を置き換えたいので、次のようなループを追加しました。

for(int i=0; i<2; i++){ 
int a = cp.lookupUtf8("SampleString");
if(a != -1)
{    
    cp.setConstant(a, new ConstantUtf8("OtherString"));
    System.out.println("Found and Replaced");  
}
else
{
    System.out.println("Not Found!");
}
}

インデックス、つまり 75 と 95 の両方を通過して新しい値に置き換えますが、残念ながら上記と同じ結果を生成することは、1 つのオカレンス、つまり 75 のみを置き換えることを意味します。すべてを置き換えるにはどうすればよいでしょうか?

4

0 に答える 0