java - 带注释的 field.setInt() - java

标签 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

这就是字段的初始化方式:

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/

相关文章:

java - 如何将日期转换为json

linux - 如何在 CentOS 最小安装中的 awk 中使用多个字段分隔符

java - 不可移动的警报窗口

java - 比较java中的顶点对

java - 自定义注释初始化方法不起作用

java - Hibernate/JPA 注释中的多列连接

java - JPA:为什么注释应用于 getter 或字段

Django 表单字段未显示

Wordpress - 单选按钮结帐 woocommerce 显示/隐藏必填字段

java - 向随机数数组中的随机位置插入一个数字