我试图学习如何使用反射打印出类的字段,方法和构造函数.这是有问题的代码:
static void displayMethodInfo(Object obj){ Class c = obj.getClass(); System.out.println(c + "{"); int mods; Field fields[] = c.getDeclaredFields(); for(Fields f : fields){ if(!Modifier.isPrivate(f.getModifiers())) System.out.println("\t" + f); } Constructor [] constructors = c.getConstructors(); for(Constructor con : constructors){ System.out.println("\t" + con); } Method methods[] = c.getDeclaredMethods(); for(Method m : methods){ if(!Modifier.isPrivate(m.getModifiers())) System.out.println("\t" + m); } System.out.println("}"); }
我得到的字段错误与我为构造函数和方法获得的错误相同:
MethodInfoTest.java:11: cannot find symbol symbol : class Field location: class MethodInfoTest Field fields[] = c.getDeclaredFields(); ^ MethodInfoTest.java:12: cannot find symbol symbol : class Fields location: class MethodInfoTest for(Fields f : fields){
我相信我使用的是正确的API,我使用的是import java.lang.*; 我认为我们需要使用Field,Method和Constructor.关于我们如何使用这些类型,我有什么错误吗?
使用星型导入不会导入子包.Field
,, Method
和Constructor
是java.lang.reflect的成员.