Object 通过将对象表中的对象强制转换为double来添加ArrayList

Object 通过将对象表中的对象强制转换为double来添加ArrayList,object,arraylist,casting,double,add,Object,Arraylist,Casting,Double,Add,为什么演员阵容(双)不起作用?我需要在我的数组列表中添加双倍 import java.util.ArrayList; import java.util.ListIterator; public class Vecteur extends ArrayList implements Cloneable{ int n; public Vecteur(int n, Object ... V){ this.n=n; if(V.length>=n)

为什么演员阵容
(双)
不起作用?我需要在我的数组列表中添加双倍

import java.util.ArrayList;
import java.util.ListIterator;


public class Vecteur extends ArrayList implements Cloneable{
    int n;

    public Vecteur(int n, Object ... V){
        this.n=n;
        if(V.length>=n)
            for(int i=0; i<n; i++)
                add((double)V[i]);
        else{
            for(int i=0; i<V.length; i++){
                if(i<n) add((double)V[i]);
                add(0);
            }
        }
    }
}
import java.util.ArrayList;
导入java.util.ListIterator;
公共类Vecteur扩展ArrayList实现可克隆{
int n;
公共向量机(int n,Object…V){
这个,n=n;
如果(V.length>=n)

对于(inti=0;i,您不使用泛型有什么特别的原因吗

您可以尝试将类标题设置为如下所示:

public class Vecteur<T> extends ArrayList<T> implements Cloneable {...
Vecteur<Double> v = new Vecteur<Double>();
它将类泛型类型应用于构造函数。通过这种方式,只要使用如下语法实例化容器,就可以从代码中删除强制转换:

public class Vecteur<T> extends ArrayList<T> implements Cloneable {...
Vecteur<Double> v = new Vecteur<Double>();

如果不使用这种类型的处理,您将得到
ClassCastException
s.

我正在使用这种方式(原始类型)为了一个独特的目的:下次演示泛型类型的优点。在这个类中,确切地说,在第一个构造函数中,我使用'Object'作为列表参数类型,这样我就可以在其他构造函数中重用该方法,比如:Vecteur(Vecteur v){this(v.n,v.toArray();}在这种情况下,您可能会遇到运行时ClassCastException或类似的问题。代码在运行时工作的唯一方式是传入一个对象或可转换为双精度的对象数组。您能否发布遇到的任何错误输出,以及用于实例化该类的代码?下面是错误m消息:线程“main”java.lang.ClassCastException中的异常:[D不能在Vecteur处转换为java.lang.Double。(Vecteur.java:16)下面是第16行:add((Double)V[i]);