field.setInt()及其注释-java
编辑: 好的,假设我有注释field.setInt()及其注释-java,java,annotations,field,Java,Annotations,Field,编辑: 好的,假设我有注释@X和@Y public class MyExampleClass{ @X @Y Integer myfield; } 我遇到的问题是当我打电话时 field.setInt(o, new Integer(65))); 我犯了一个错误 java.lang.IllegalArgumentException: Can not set java.lang.Integer field MyExampleClass.myfield to (int)65 以下是字段的初始化
@X
和@Y
public class MyExampleClass{
@X @Y Integer myfield;
}
我遇到的问题是当我打电话时
field.setInt(o, new Integer(65)));
我犯了一个错误
java.lang.IllegalArgumentException: Can not set java.lang.Integer field MyExampleClass.myfield to (int)65
以下是字段的初始化方式:
Field field = o.getClass().getField(fieldname);
o
是一个对象
参数。当我调用它时,我给它传递一个类型为MyExampleClass
的对象,fieldname
的值是“myfield”
以下是堆栈跟踪:
java.lang.IllegalArgumentException: Can not set java.lang.Integer field MyExampleClass.myfield to (int)65
java.lang.IllegalArgumentException: Can not set java.lang.Integer field MyExampleClass.myfield to (int)65
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(
UnsafeFieldAccessorImpl.java:167)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(
UnsafeFieldAccessorImpl.java:191)
at sun.reflect.UnsafeObjectFieldAccessorImpl.setInt(UnsafeObjectFieldAcc
essorImpl.java:114)
at java.lang.reflect.Field.setInt(Field.java:943)
at MyCallingClass.get(MyCallingClass.java:111)
at MyTester.main(MyTester.java:20)
对象没有注释。可以对字段、类、方法等(请参见
@Target
注释)进行注释,但注释对象的概念不存在。注释只是元数据。它们是常数
你所要求的是不可能的。当我运行我的程序时,我得到了错误:
java.lang.IllegalArgumentException:无法将java.lang.Integer字段MyExampleClass.myfield设置为(int)56
如果注释没有问题,会是什么?只有当我使用setInt方法时才会发生这种情况。@user3475234请在您的问题中发布所有相关的详细信息。我不知道您在做什么来帮助您。@user3475234,请包括完整的堆栈跟踪。@user3475234似乎对于setInt
,基础字段必须是基元类型int
。尝试使用set
。谢谢,将其更改为set
有效。我想Java会在int
和Integer
之间进行自动转换,但它没有。谢谢