如何在 Android api 21+ 上访问 Class.typeName

问题描述

Class.typeName 或 Class.getTypeName() 已根据 Android 文档添加到 Api 26 中。有没有办法以其他方式获取类型名称

enter image description here

解决方法

方法 getTypeName() 已在 Java 8 中添加,以实现在同一 Java 版本中添加的 Type.getTypeName() 方法(如 Class 实现 Type)。

对于非数组类,结果与 getName() 相同。对于完全相同的结果,您可以使用

static String getTypeName(Class<?> cl)
{
  if(!cl.isArray()) return cl.getName();
  int dimensions;
  for(dimensions = 0; cl.isArray(); cl = cl.getComponentType()) dimensions++;
  String name = cl.getName();
  StringBuilder sb = new StringBuilder(name.length() + dimensions * 2).append(name);
  for(; dimensions > 0; dimensions--) sb.append("[]");
  return sb.toString();
}
,

没办法。

Class.getTypeName() 是在 java 8 中添加的。Android 从 API 26 开始支持 java 8。