-1
我是新來的java和目前正在使用練習Reflection。錯誤:無法設置最終的int字段java.lang.Integer.value java.lang.Class
我有這樣的代碼:
try {
Class<?> c = Integer.class;
System.out.println("Name: " + c.getName());
System.out.println("Super Class: " + c.getSuperclass().getName());
Class[] cl = c.getInterfaces();
System.out.println("Interfaces list: ");
for(Class cls: cl)
{
System.out.println(cls.getName() + ", ");
}
System.out.println("");
int i = c.getModifiers();
System.out.println("Access modifiers: " + Modifier.toString(i));
//-----------
System.out.println("\nMETHODS");
Method[] ms = c.getDeclaredMethods();
for(Method m: ms)
{
System.out.println("Name: "+ m.getName());
}
//------------
System.out.println("\nFIELDS");
Field [] flds = c.getDeclaredFields();
for(Field f: flds)
{
System.out.println("Name: "+ f.getName());
System.out.println("Data type: " + f.getType().getName());
i = c.getModifiers();
System.out.println("Acc modifiers: " + Modifier.toString(i));
f.setAccessible(true);
Object value = f.get(c);
if (value != null)
{
System.out.println(f.getName() + "=" + value);
}
System.out.println("--------------");
}
}
catch(Throwable e)
{
System.out.println("error: " + e.getMessage());
}
}
但是,它給了我這是在標題中提到領域的「價值」的錯誤。請解釋錯誤,並告訴我們爲什麼必須寫'f.setAccessible(true); '(我通過互聯網看到)它的目的是什麼?