用Java反射显示字段类型

用Java反射显示字段类型,java,class,reflection,types,field,Java,Class,Reflection,Types,Field,我正在Java中使用反射 这是我的密码: public String getClassFields(Class aClass) { String ClassFields = ""; Field[] Fields = aClass.getDeclaredFields(); boolean isPublic; String separator = System.getProperty( "line.separator" ); for (Field f : Fields)

我正在Java中使用反射

这是我的密码:

  public String getClassFields(Class aClass)
  {
  String ClassFields = "";
  Field[] Fields = aClass.getDeclaredFields();
  boolean isPublic;
  String separator = System.getProperty( "line.separator" );
  for (Field f : Fields) 
  {
    isPublic = Modifier.isPublic(f.getModifiers());
    if (isPublic)
        ClassFields += "public " + f.getType() + " " + f.getName() + separator;
    else
        ClassFields += "private " + f.getType() + " " + f.getName() + separator;
  }    
  return ClassFields;
}

如果类中的字段如下所示:

private int Diameter;
private Colour Colour;
我在上面发布的代码返回以下内容:

private int Diameter
private class Colour Colour
如何修改代码以从行中删除其他“类”字:

private class Colour Colour

现在,您将获得默认的字符串表示形式,由以下内容提供:

将对象转换为字符串。字符串表示法是字符串“class”或“interface”,后跟空格,然后是类的完全限定名,格式为
getName
。如果这个
对象代表一个基元类型,这个方法返回基元类型的名称。如果这个
对象表示void,那么这个方法返回“void”

因此,您需要使用不同的方法来获取类的名称。改变

f.getType()



旁注:不要在这样的循环中执行字符串连接。因为它每次都必须复制字符串,这导致二次(
O(n^2)
)渐近运行时。请改用。

调用
替换为
类“
((Class) f.getType()).getName()
// or
((Class) f.getType()).getSimpleName()