gpt4 book ai didi

java - 对象数组中不可访问的公共(public)方法

转载 作者:行者123 更新时间:2023-11-29 06:13:16 25 4
gpt4 key购买 nike

我遇到的问题是无法在数组的对象元素中调用我自己的方法

下面是数组部分的代码:

public class CardRules {
private Object cardArray[];

public CardRules(Object cardArrayCopy[]){

cardArray = cardArrayCopy;
multiples();
}
public void multiples(){
for(Object ArrayElement: cardArray){
System.out.println(ArrayElement);
}
}
}

对于卡片对象:

public class Card {
private int rank;
private int suit;
private String Stringrank[] = {"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
private String Stringsuit[] = {"Spades", "Hearts", "Diamonds", "Clubs"};
public static int CardNo = 0;

public Card(int cardDetails[]){
rank = cardDetails[1];
suit = cardDetails[0];
CardNo++;
}
public String getCard(){
return ("Card: " + Stringrank[rank] + " Of " + Stringsuit[suit]);

}
public int getRank(){
return rank;
}
public int getSuit(){
return suit;
}

这部分程序的输出是哈希码,卡@9304b1卡@190d11名片@a90653卡@de6ced卡片@c17164

我想放一些类似的东西

System.out.println(ArrayElement.getRank());

有人知道为什么会这样吗?

顺便说一下,数组是使用预制的 .toArray() 方法从另一个类中的 ArrayList 复制的

最佳答案

编译器无法知道这些对象是卡片,因为您在数组中将它们声明为 Object。如果您确定它们将是卡片,请将数组声明为 Card (private Card cardArray[];) 或将它们转换为 ((Card)ArrayElement)。 getRank().

如果您想再检查一次,请使用 ArrayElement instanceof Card 在转换之前验证这是一个真正的 Card 实例。

关于java - 对象数组中不可访问的公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6013239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com