Raf*_*aeu 1 java reflection type-conversion
我使用 JDK 1.8 并尝试检索字段的值,该字段被标记为Integer而不是int。
我无法将数据类型更改为 int 因为此类由 Lucene 和 OR/M 使用,所以我只能使用 Reflection 来玩它
private Integer fee;
public Integer getFee() {
return fee;
}
public void setFee(Integer fee) {
this.fee = fee;
}
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作时:
Field field = myClass.getClass().getDeclaredField("fee");
field.setAccessible(true);
Integer fee = field.getInt(myInstance);
Run Code Online (Sandbox Code Playgroud)
我得到这个异常:
java.lang.IllegalArgumentException:
Attempt to get java.lang.Integer field "com.xyz.models.MyModel.fee"
with illegal data type conversion to int
Run Code Online (Sandbox Code Playgroud)
两个问题:
getInt. 使用get并施放它。Field field = Foo.class.getDeclaredField("fee");
field.setAccessible(true);
Integer fee = (Integer) field.get(someInstance);
Run Code Online (Sandbox Code Playgroud)
鉴于您的类已经有一个吸气剂,我不明白为什么您需要通过反射访问该字段。只需使用someInstance.getFee().
| 归档时间: |
|
| 查看次数: |
1578 次 |
| 最近记录: |