Java 将一个对象[]强制转换为另一个对象[],是否可能?

Java 将一个对象[]强制转换为另一个对象[],是否可能?,java,arrays,Java,Arrays,我想知道您是否可以将一个对象[]强制转换为另一个不同类的对象[] 这是我试着做的,但显然不起作用 public CardCollection() { CardCollection[] myCollection = new CardCollection[MAX_CARDS]; for(int i = 0; i < myCollection.length; i++){ myCollection[i] = (BaseballCard[]) Collection[i

我想知道您是否可以将一个对象[]强制转换为另一个不同类的对象[]

这是我试着做的,但显然不起作用

public CardCollection() {
    CardCollection[] myCollection = new CardCollection[MAX_CARDS];
    for(int i = 0; i < myCollection.length; i++){
        myCollection[i] = (BaseballCard[]) Collection[i];
    }
}

我尝试了myCollection[I]=(BaseballCard)Collection[I]。告诉我BaseballCard无法解析为类型时出错。

在您的特定情况下,您可以实现以下目标:

public CardCollection() {
    CardCollection[] myCollection = new CardCollection[MAX_CARDS];
    for (int i = 0; i < myCollection.length; i++){
        myCollection[i] = (BaseBallCard) Collection[i];
    }
}
public CardCollection(){
CardCollection[]myCollection=新的CardCollection[MAX_CARDS];
for(int i=0;i
您甚至可以跳过explicite cast,因为
集合
是一个
BaseBallCard[]

您正在做的事情

 myCollection[i] = (BaseBallCard[]) Collection[i];
你该怎么办

 myCollection[i] = (BaseBallCard) Collection[i];
逐个转换每个对象

所需条件

您可以强制转换为对象类型,然后根据某些条件(如Object.getClass())再次将其强制转换为其他类型的对象。意味着您应该拥有相同的
Object1.getClass().getName()
Object2.getClass().getName()


如果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]
    }
}
但是,如果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。

这里的
Collection
是什么?可能与您没有将某个对象[]强制转换为另一个对象[]重复。您正在将一个对象强制转换为对象[]。您是否尝试过
myCollection[i]=(BaseBallCard)Collection[i]?我正在将对象强制转换为对象[]??起初我是这样做的,但它给了我一个BaseballCard错误,表示无法解析为类型。所以我试着把它铸造成棒球卡[]:/是的,因为第二个
B
是大写!类型不匹配:无法从BaseballCard转换为CardCollection。它告诉我把它演成CardCollectionOh。所以我所要做的就是扩展BaseballCard类的卡片收集。美好的至于Arrays.copyof()。我不能用它。显然,如果我这样做,硬件将太容易了。因此,我们必须手动执行所有操作。教授及其局限性。QQ。。但这解决了所有问题。请阅读我回答的后半部分;您几乎肯定不想让BaseBallCard扩展CardCollection并使用您问题中的代码。我确实创建了BaseBallCard类型的对象[],每当我尝试在CardCollection类中使用方法时,它都不会起作用, }
public CardCollection() {
    BaseBallCard[] myCollection = new BaseBallCard[MAX_CARDS];
    // just create the array - don't try to populate it in the constructor
}
public CardCollection() {
    BaseBallCard[] myCollection = new BaseBallCard[MAX_CARDS];
    // just create the array - don't try to populate it in the constructor
}