编辑:
好的,假设我有注释 @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
是一个Object
参数。当我调用它时,我向它传递一个 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 - 带注释的 field.setInt() - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717647/