使用Java反射显示字段类型

4

我正在使用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

我应该如何修改代码,以从以下行中删除额外的'class'单词: ```html 如何修改代码,以删除以下行中多余的'class'单词: ```
private class Colour Colour

使用参数 "class """ 调用 replace 函数? - Patashu
1个回答

4

现在,您正在获取默认的字符串表示形式,该表示形式由Class#toString()提供:

将对象转换为字符串。字符串表示形式是字符串“class”或“interface”,后跟一个空格,然后是类的完全限定名称,格式由getName返回。如果此Class对象表示原始类型,则此方法返回原始类型的名称。如果此Class对象表示void,则此方法返回“void”。

因此,您想使用不同的方法来获取类的名称。更改

f.getType()

为了

((Class) f.getType()).getName()
// or
((Class) f.getType()).getSimpleName()

顺便提一下:不要在循环中执行字符串连接。因为每次都需要复制字符串,这会导致二次的(O(n^2))渐近运行时间。改用StringBuilder


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接