获取Class <array> </array>的代码名称

时间:2011-04-27 13:49:48

标签: java reflection code-generation

我正在使用反射生成一些代码,需要在代码中获取描述某些数组类型的字符串。默认的API并没有真正实现这一点。

  • (new int[12]).getClass().getName()返回[I
  • (new Date[2][]).getClass().getName()返回[[Ljava.util.Date

结果是可解析的,但是分别从这两个中获取int[]java.util.Date[][]是否有更简单,更好的方式?

2 个答案:

答案 0 :(得分:4)

尝试Class.getSimpleName()

  

数组的简单名称是附加了“[]”的组件类型的简单名称。

答案 1 :(得分:3)

没有内置方法返回“漂亮的名字”(a.k.a是用Java源代码编写的名称),

getSimpleName()返回“nice”名称:它只返回没有包的类名,并根据需要附加[]

如果您需要[]的完全限定名称,那么您需要手动构建:

 public static String getName(final Class<?> clazz) {
   if (!clazz.isArray()) {
     return clazz.getName();
   } else {
     return getName(clazz.getComponentType()) + "[]";
   }
 }