を@Yogiする
THXあなたは間違いなくgetQualifiedName
を使用したくない:それはいくつかのケースで驚くべき結果を生成します。例えば、パッケージ名の最後の部分と内部クラスの親クラスを区別することは不可能です。 "java.util.Map.Entry"は、パッケージ名の一部、またはクラスを含むクラスの名前を "Map"とします。Entry
? 「java.util.Map.Entry」の代わりに「a.b.c.d」(Proguardで処理されたコードの典型的なケース)の場合はどうなりますか? getQualifiedName
で
同様に、デフォルトのクラス(名前の)パッケージのドットの前のものがありません...
あなた解析コードは複雑で、信頼できないだろう。一般的に言えば、Elementの文字列表現を使用する必要があるときは、何か間違ったことをしています。
これはelement
のパッケージを取得するための適切なパターンです:
Element enclosing = element;
while (enclosing.getKind() != ElementKind.PACKAGE) {
enclosing = enclosing.getEnclosingElement();
}
PackageElement packageElement = (PackageElement) enclosing;
これは正しくすべて例でパッケージを取得します。
ありがとう!お役立ち情報 – xetra11