3

クラスがインターフェースを実装している場合、完全修飾パッケージなしでクラス実装の名前を取得するにはどうすればよいですか?

interface HasText;
class Base extends HasText;

List<HasText> texts;

for (HasText text : texts) {
     //Error: The method getSimpleName() is undefined for the type Class<capture#1-of ? extends HasText>
     Sysout(text.getClass().getSimpleName());

     //prints: my.package.to.Base
     Sysout(text.getClass().getName());
}

パッケージ宣言なしで「ベース」のみを出力として取得するには?

4

2 に答える 2

3

これは一般的に機能するはずなので、次の回避策しか思いつきませんでした。

String name = text.getClass().getName();
name = name.substring(name.lastIndexOf(".") + 1);

私がもっとうまくやれるかどうかコメントしてください...

于 2013-04-08T11:19:38.987 に答える