我遇到的问题是无法在数组的对象元素中调用我自己的方法
下面是数组部分的代码:
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/