用Java反射显示字段类型
我正在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)
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()