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