gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:49:18 25 4
gpt4 key购买 nike

编辑:

好的,假设我有注释 @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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com