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

标签 java arrays arraylist public-method

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

下面是数组部分的代码:

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/

相关文章:

c - 如何将 ep->d_name 插入到 C 中的数组中

java - 为什么 List 中的元素会自行修改?

Java整数到固定长度字节数组

java - pact-jvm-consumer-specs2 - 缺少 : [error] method: GET

arrays - 使用 swift array 会自动纠缠 NSArray 的使用吗?

java - 为什么这些java行会进入无限循环

java - 如何判断数组列表中的元素是相同还是不同?

java - 按数量过滤计量单位

Java根据属性对对象进行排序

php - 如何将 array_intersect() 值与另一个数组中的相应键匹配?