Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型转换arrayList/Vector,不带<&燃气轮机;在爪哇_Java_Vector_Arraylist - Fatal编程技术网

Java 类型转换arrayList/Vector,不带<&燃气轮机;在爪哇

Java 类型转换arrayList/Vector,不带<&燃气轮机;在爪哇,java,vector,arraylist,Java,Vector,Arraylist,你好,我正在为一个学校项目制作一个纸牌游戏,我正在使用“甲板”向量来包含一个纸牌类的实例。我的问题是,在本课程中,我们使用的是一个完全过时的编译器,它来自一家不再支持该产品的公司,因此许多完全合法的java语句都会返回一个错误 但是,将向量强制转换为“Card”类型将无法使用符号 Card drawCard = new Card (); drawCard = (Card) deck1.get (0); drawCard.draw (g); 被编译器接受。我不能用这个方法

你好,我正在为一个学校项目制作一个纸牌游戏,我正在使用“甲板”向量来包含一个纸牌类的实例。我的问题是,在本课程中,我们使用的是一个完全过时的编译器,它来自一家不再支持该产品的公司,因此许多完全合法的java语句都会返回一个错误

但是,将向量强制转换为“Card”类型将无法使用符号

    Card drawCard = new Card ();
    drawCard = (Card) deck1.get (0);
    drawCard.draw (g);
被编译器接受。我不能用这个方法来改变类变量,所以我想这样做

    (Card)deck1.get (a).setY (32);
但这也不起作用。有没有办法不使用符号直接将向量转换为对象?非常感谢,如果这很难理解/让人困惑/难以理解,我很抱歉。

(Card)deck 1.get(a)。setY(32)
意味着将setY(32)的结果投射到
Card
,这是错误的

使用括号将铸件分组:

((Card)deck1.get(a)).setY(32);
此外,您还可以通过检索
deck1的结果来降低代码的可读性。首先,将(a)
放入
变量中:

Card card = (Card)deck1.get(a);
card.setY(32);

建议:如果您没有使用泛型,则在施放之前,始终使用
isntanceof
操作符检查实例是安全的

示例代码:

Object obj = deck1.get(0);
if(obj instanceof Card){
     Card card = (Card)obj;
}

你需要括号。Java 1.5之前的版本?我很抱歉…顺便说一句,这些被称为泛型。你有一对额外的括号。在99%的前泛型情况下(它是一个已知类型的同质集合),此代码的
else
块无论如何只需要抛出一个相关的异常,
ClassCastException
与任何情况一样合适。