我有一个仅包含int值的接口(实质上,它与枚举相似)。
我想要遍历接口值,使用以下代码:
for (Field x : MyInterface.class.getDeclaredFields())
{
int y = x.getInt(x);
// do something with 'y'...
}
以我看来,要么getInt方法可以是静态的,要么它不需要任何参数。
那么为什么这个方法需要'this'和额外的参数呢?
它们有可能不同吗?
我有一个仅包含int值的接口(实质上,它与枚举相似)。
我想要遍历接口值,使用以下代码:
for (Field x : MyInterface.class.getDeclaredFields())
{
int y = x.getInt(x);
// do something with 'y'...
}
int y = x.getInt(x);
Field.getInt
的 JavaDoc 如下所示:Field
是一个类的“全局”定义。如果您想访问该类某个特定实例的字段值,则需要将该实例提供给 getField(Object)
方法。null
是不正确的,除非该字段是静态字段。您也不能使用字段本身(x
)作为参数,因为它不是该类的实例。interface
中定义时,所有字段都自动成为 static final
。因此,您可以提供 null
作为参数,因为没有需要的其他信息。Field
方法也可用于其他情况(非静态情况),因此需要这个参数。Field
的一个实例,而不是MyInterface
(这是非静态情况下唯一被接受的类型。在静态情况下它并不重要,因为它没有被使用。) - noone
null
作为参数传递:它也应该可以工作。 - sp00m