Java 对象数组中无法访问的公共方法
我的问题是无法在数组的对象元素中调用自己的方法 以下是数组中代码部分的代码:Java 对象数组中无法访问的公共方法,java,arrays,arraylist,public-method,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)
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;
}
}
这部分程序的输出是散列码,
Card@9304b1
Card@190d11
Card@a90653
Card@de6ced
Card@c17164
我想放一些类似的东西
System.out.println(ArrayElement.getRank());
有人知道为什么会这样吗
顺便说一句,使用premade.toArray()方法从另一个类中的ArrayList复制数组编译器无法知道这些对象是卡片,因为您在数组中将它们声明为
对象
s。如果您确定它们将是卡片,请将数组声明为卡片(私人卡卡片数组[];
)或将它们转换为((卡片)ArrayElement).getRank()
如果要再次检查,请在强制转换之前使用卡片的阵列元素实例验证这是一个真实的卡片实例。System.out.println()
调用对象.toString()
,因此覆盖卡片类的toString()
方法。(顺便说一句:最好使Stringrank
和Stringsuit
都是静态的):
如果他有权访问将ArrayList
转换为数组的另一个类,他还可以通过将数组传递给toArray
方法,使其返回Card
类型的数组。这样他就可以避免对单个数组元素进行显式强制转换。e、 g.Card[]cardArray=(Card[])list.toArray(新卡[array.size()])
最好将它们声明为枚举。牌的等级和花色不太可能很快改变。
@Override
public String toString() {
return String.format("Card [rank= %s, suit= %s]",
Stringrank[rank], Stringsuit[suit]);
}