如何从Object转换为Double []

时间:2015-11-05 09:49:03

标签: java classcastexception

我在Java 8中有一个对象,它实际上是一个包含Double对象的对象数组。我需要检查(使用instanceof)并获取值。但是我总是在尝试转换为Object []或Double []时遇到错误。

这是Eclipse表达式中的变量

enter image description here

运行代码时出现此异常

Object position = whitelist.get("code").get("position");
if(position!=null){
     feature.setGeometry(new Point(((Double []) position)[0],((Double []) position)[1]));
}
  

java.lang.ClassCastException:java.util.ArrayList无法强制转换为[Ljava.lang.Object;

但它适用于ideone.com:

<script src="http://ideone.com/e.js/J2ZJSV" type="text/javascript" ></script>

修改my own answer...

2 个答案:

答案 0 :(得分:1)

whitelist.get("code").get("position")显然会返回包含ArrayList个对象的Double

你可以简单地写一下:

List<Double> position = (List<Double>)whitelist.get("code").get("position");
if (position!=null)
     feature.setGeometry(new Point(position.get(0),position.get(1)));

答案 1 :(得分:0)

我很担心这个错误。这是一个非常简单的错误解决方法,但现在我发布在这里(明确地说这不是最好的一天)我也会发布解决方案。

Object的类型是ArrayList,所以我应该转换为这种类型并检查这种类型。

Object position = whitelist.get("code").get("position");
if(position!=null && position instanceof List<?>){
    List<Double> point = (List) position;
    feature.setGeometry(new Point(point.get(0),point.get(1)));
}