我的问题故意标题几乎一模一样this one https://stackoverflow.com/questions/2690333/how-to-get-the-name-of-a-class-without-the-package,但我想要的是去掉包名称没有别的。我的课程看起来像
class AProperlyAndDescriptivelyNamedClass {
class First {...}
class Next {...}
class Last {...}
}
class AnotherTopLevelLongNamedClass {
class First {...}
class Next {...}
class Last {...}
}
正如您所看到的,我为我的顶级类使用了一些长且描述性的类名,并且重复嵌套类中的所有内容将是非常无意义的。使用一些奇怪的快捷方式也好不到哪儿去。我总是使用它们的封闭类(而不是包)来引用这些类,这也是我想要打印它们的方式。
我知道我可以获取包名称并从完整的类名称中删除相应数量的字符,但我想有人已经这样做了?
我想你需要实现一个像这样的简短方法:
private static String getSimpleName(Class<?> clazz) {
String simpleName = clazz.getSimpleName();
if (clazz.isMemberClass()) {
Class<?> enclosingClass = clazz.getEnclosingClass();
simpleName = enclosingClass.getSimpleName() + "." + simpleName;
}
return simpleName;
}
Then
String simpleName = getSimpleName(AnotherTopLevelLongNamedClass.First.class);
System.out.println(simpleName);
将输出
AnotherTopLevelLongNamedClass.First
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)