私はApache bcel libraryを使用してJavaクラスファイルを読み込みます。これにより、呼び出しから、指定されたメソッドのローカル変数名を識別できます。Apacheでローカル変数のデータ型を識別するバイトコードエンジニアリングライブラリ(bcel)
しかし、詳細には、ローカル変数のデータ型関連の詳細は含まれていません。また、変数daat型を取得する他の方法も見つけられませんでした。ほとんど役に立たないでしょう
私はApache bcel libraryを使用してJavaクラスファイルを読み込みます。これにより、呼び出しから、指定されたメソッドのローカル変数名を識別できます。Apacheでローカル変数のデータ型を識別するバイトコードエンジニアリングライブラリ(bcel)
しかし、詳細には、ローカル変数のデータ型関連の詳細は含まれていません。また、変数daat型を取得する他の方法も見つけられませんでした。ほとんど役に立たないでしょう
実際には方法があります。 method.getLocalVariableTable().getLocalVariableTable()
を反復することによって、ローカル変数の署名を得ることができます。署名を取得したら、org.apache.bcel.classfile.Utility
というユーティリティクラスがあり、変換方法はUtility.signatureToString(variableSignature)
です。ユーティリティクラスの
のJavadoc - https://commons.apache.org/proper/commonsbcel/apidocs/org/apache/bcel/classfile/Utility.html
例コードセグメント
転記これはクラスファイルこれはBCELコードで
public class ExampleClassFile {
public void testClass(int input){
int intVal= 0;
String stringVal= "randomText";
boolean booleanVal= false;
int []intArray = new int[2];
}
}
を分析するために使用される例示的なJavaファイルであります上記の.classファイルを解析するために
JavaClass javaClass = Repository.lookupClass("ExampleClassFile");
for(Method method: javaClass.getMethods()){
for(LocalVariable localVariable: method.getLocalVariableTable().getLocalVariableTable()){
System.out.println(Utility.signatureToString(localVariable.getSignature()) + " " + localVariable.getName());
}
}
これらの出力結果
"ローカル変数の種類関連する詳細" であります? –
データ型関連の詳細(文字列、ブール値、整数など) –
これらは、あなたが満足すれば、リフレクションでアクセスできます。 –