将对象[]转换为另一个对象[],有可能吗?
我想知道你是否可以将一个对象[]转换为另一个类的另一个对象[]。将对象[]转换为另一个对象[],有可能吗?
这是我尝试做的,但显然它不工作。
public CardCollection() {
CardCollection[] myCollection = new CardCollection[MAX_CARDS];
for(int i = 0; i < myCollection.length; i++){
myCollection[i] = (BaseballCard[]) Collection[i];
}
}
我在尝试将集合对象[]转换为BaseballCard时出现错误。
我以前曾作了
BaseBallCard[] Collection = new BaseBallCard[MAX_CARDS]; // MAX_CARDS=100;
我试图MyCollection的[I] =(BaseballCard)收集[i]中。给我一个错误,说BaseballCard不能解析为类型。
在特定情况下,可以实现你想要的,因为这是什么:
public CardCollection() {
CardCollection[] myCollection = new CardCollection[MAX_CARDS];
for (int i = 0; i < myCollection.length; i++){
myCollection[i] = (BaseBallCard) Collection[i];
}
}
你甚至可能跳过explicite投,作为Collection
是一个BaseBallCard[]
。
我开始的时候这样做,但它给了我一个BaseballCard的错误,说不能解析为一个类型。所以我试着把它作为BaseballCard []。 :/ – user3083893 2015-02-09 16:36:58
是的,因为第二个'B'是* capital *! – meskobalazs 2015-02-09 16:38:03
仍然不起作用 – user3083893 2015-02-09 16:39:06
如果BaseBallCard是CardCollection的子类,你的代码可以更正如下:
public CardCollection() {
CardCollection[] myCollection = new CardCollection[MAX_CARDS];
for(int i = 0; i < myCollection.length; i++){
myCollection[i] = (BaseBallCard) Collection[i]; // note BaseBallCard not [i]
}
}
或者更容易使用Arrays.copyOf()
:
public CardCollection() {
CardCollection[] myCollection = Arrays.copyOf(Collection, MAX_CARDS, BaseBallCard.class);
}
但是如果BaseBallCard是一个子类的CardCollection,然后每次创建BaseBallCard时,都会隐式调用此构造函数(因为它是父类型的默认构造函数),并且每次制作BaseBallCard时都会创建一个新的CardCollection数组。你不是真的想要这样,相信我。
你可能试图做的,给定类的命名,是在CardCollection中存储BaseBallCard []。
public CardCollection() {
BaseBallCard[] myCollection = new BaseBallCard[MAX_CARDS];
// just create the array - don't try to populate it in the constructor
}
然后你可以有不同的方法来从CardCollection添加和删除BaseBallCard。
哦。所以我所要做的就是扩展CardCollection for BaseballCard类。不错。至于Arrays.copyof()。我无法使用它。显然,如果我这样做,那么hw就太容易了。所以我们必须手动完成所有工作。教授和他们的局限性。 QQ ..但是那修复了一切。 O_O – user3083893 2015-02-09 16:46:52
请阅读我答案的后半部分;你几乎可以肯定*不想*使BaseBallCard扩展CardCollection并使用你问题中的代码。 – 2015-02-09 16:50:01
我做了一个BaseBallCard类型的对象[],每当我尝试使用CardCollection类中的方法时,它都不起作用。 , \t} – user3083893 2015-02-09 16:53:04
什么是'收藏'这里? – 2015-02-09 16:22:54
[将Object数组转换为Integer数组错误](http:// stackoverflow。com/questions/1115230/cast-object-array-to-integer-array-error) – Simulant 2015-02-09 16:26:25
你不是将一个对象[]转换为另一个对象[]。您正在将对象投射到对象[]。 – 2015-02-09 16:27:22