【发布时间】:2011-09-22 21:25:44
【问题描述】:
我已经有了解决方案,但我不喜欢它。另外,很高兴知道您对此的看法。
你看,elem.get 会返回一个Object,在 x 和 y 的情况下,这将是一个 Float。
这段代码抛出了标题中描述的异常:
String names[] = { "x", "y", "src" };
Class types[] = { float.class, float.class, String.class };
for (int i = 0; i < names.length; i++)
{
if (elem.containsKey(names[i]))
{
par.add(types[i]);
arg.add(types[i].cast(elem.get(names[i])));
}
}
代码用于定义实例化对象的参数列表。参数和对象的类名都在一个外部数据文件中定义(但没关系)。
解决方案,我不喜欢的东西(因为它失去了我试图获得的灵活性),在 for:
if(types[i] == float.class)
{
float v = (Float)elem.get(names[i]);
arg.add(v);
} else
{
arg.add(types[i].cast(elem.get(names[i])));
break;
}
其他选项是将types 中的float.class 更改为Float.class,但我不会这样做,因为该代码用于实例化在其构造函数中具有float 参数的对象。
谢谢!
【问题讨论】:
-
如果您使用的是 java 1.5 或更高版本,浮点数将自动拆箱为浮点数,不是吗?您是否尝试过使用 Float.class?
-
正如我所写,我不想使用 Float.class,因为我需要在之后的实例化中将参数用作浮点数。但是如果我在这段代码中使用 Float.class,它就可以工作。它只是稍后在尝试实例化构造函数具有浮点数的 Object 时失败。感谢您的回答!