Java-类字段/方法getInt

Java-类字段/方法getInt,java,Java,我有一个只包含int值的接口(所以本质上,它非常类似于枚举) 我想使用以下代码迭代接口值: for (Field x : MyInterface.class.getDeclaredFields()) { int y = x.getInt(x); // do something with 'y'... } 在我看来,getInt方法可以是静态的,也可以不需要任何参数 那么为什么这个方法需要“this”和附加参数呢 他们是否有可能有所不同 int y = x.getInt(x);

我有一个只包含int值的接口(所以本质上,它非常类似于枚举)

我想使用以下代码迭代接口值:

for (Field x : MyInterface.class.getDeclaredFields())
{
    int y = x.getInt(x);
    // do something with 'y'...
}
在我看来,getInt方法可以是静态的,也可以不需要任何参数

那么为什么这个方法需要“this”和附加参数呢

他们是否有可能有所不同

int y = x.getInt(x);
这实际上是错误的,没有任何意义。
Field.getInt
的JavaDoc说明如下:

参数: obj-从中提取int值的对象

返回: 转换为int类型的字段值

字段是为类定义的“全局”字段。如果要访问该类的某个实例的字段值,则需要将该实例提供给
getField(Object)
方法

它甚至更进一步说:

抛出:

IllegalArgumentException-如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者如果字段值不能通过扩展转换转换为int类型

NullPointerException-如果指定的对象为null且字段为实例字段

因此,您不能按照注释中的建议提供
null
,除非该字段是
静态
字段。您也不能将字段本身(
x
)用作参数,因为它不是该类的实例

在您的特定情况下,当在
接口中定义字段时,所有字段将自动成为
静态最终
。因此,您可以提供
null
作为参数,因为不需要进一步的信息


但是,由于
字段的此方法也可以用于其他情况(非静态情况),因此需要有此参数。

尝试将
null
作为参数传递:它也应该起作用。@sp00m:谢谢。。。但是仍然没有回答我的问题…@barakmanos-接口中不能有静态方法…@LostMind:我问的是Field类中的一个方法。请仔细阅读问题。@noone:我有一个接口(不是我的,所以我无法更改),我正在尝试使用(内置)字段类迭代它的int值。所以我问的问题是Field类中的方法,而不是一般的接口或类。谢谢。请仔细阅读问题中的代码:“x”是类字段的实例。为了调用getInt方法,我必须使用这个实例,因为该方法不是静态的。那么,为什么这个方法一开始不是静态的,或者说——为什么它需要一个参数呢?@barakmanos我回答了。我在回答的末尾添加了一些更具体的信息,因此它变得更清晰。“字段本身(x)不是该类的实例”?当我声明'Field x'时,'x'是什么类的实例?@barakmanos x是
Field
的实例,而不是
MyInterface
(这是在非静态情况下唯一可接受的类型。在静态情况下,这无关紧要,因为它没有被使用。)那么在类字段中,为什么getInt方法不是静态的呢?使用字段实例和附加参数调用此方法有什么意义?在什么情况下,如果字段实例和所需参数彼此不同,您会调用它?