我正在构建类似于数据流图的东西,其中包含在它们之间传递数据的节点和连接。在这种情况下,基类是
,它有一个前一个目标和一个下一个目标来来回传递数据。其他类扩展该类以提供数据源、合并数据(例如乘法)等。ValueTarget<T>
现在,我想编写一个从任何给定方法获取其值的数据源。它接受一个java.lang.reflect.Method
实例(以及调用它的对象和参数)并使用它来设置数据:
@Override
public T getValue() {
if (valueCalculator != null) {
try {
Object result = valueCalculator.invoke(sourceObject);
T typedResult = (T)(result);
return typedResult;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return super.getValue();
}
现在,我已经用public int getLength()
另一个对象的方法尝试了这个。但是,在图中,我需要将此方法映射到float
结果。给定的类型转换不会抛出异常,但是当读取 last
的值并将其结果用作ValueTarget<Float>
float
另一个方法的参数时,程序崩溃,说明“java.lang.Integer 无法转换为 java.lang.Float ”。
现在,我知道 Integer 和 Float 是装箱的,因此不能转换为彼此的类型。但是,由于这些类型都是使用泛型处理的,因此我无法将其拆箱为特定类型。
有没有办法执行通用拆箱以便能够将装箱的值转换为相应的值类型?