在我的代码中,我有一些类需要传递(使用 UDP 发送)到某个服务器,他收到的元素结构包含 Unsigned32 类型值。
我使用 javolution 来定义元素 struct =>
import javolution.io.Struct;
public class ElementData
{
public Struct.Unsigned32 data1;
public Struct.Unsigned32 data2;
public Struct.Unsigned32 data3;
public Struct.Unsigned32 data4;
public Struct.Unsigned32 data5;
public Struct.Unsigned32 data6;
public Struct.Unsigned32 data7;
public Struct.Unsigned32 data8;
}
我编写了从 CVS 文件中读取元素结构值数据的代码 - 并将元素结构发送到服务器。我想使用'Field'反射设置元素的值 - 但我不能这样做,因为我不能直接设置值 - 所以我必须调用 unsigned32 的'set'方法来做
例子:
public static void main(String[] args) throws NoSuchFieldException {
ElementData element = new ElementData();
Field[] allFields = ElementData.class.getDeclaredFields();
Unsigned32 tmp = new Unsigned32();
tmp.set(12);
Field f1 = ElementData.class.getDeclaredField(allFields[0].getName());
f1.setInt(element, 12); // error because 12 is Int and not Unsigned32
f1.set(element, 12); // error also
f1.set(element, tmp); // error also
}
我正在寻找任何可能的方式来使用字段调用设置器