我在这里要做的是制作两种方法:
getCards:将Object引用从一个桩移动到另一个
removeCards:删除多个arraylist条目
import java.util.ArrayList;
public abstract class Pile {
public static ArrayList <Card> newPile;
public Pile() {
newPile = new ArrayList <Card>();
}
public abstract void displayPile();
public void removeCards(int numOfCards) {
for (int i = 0; i < numOfCards; i++) {
Pile.newPile.remove(0);
}
}
public static void getCards(int numOfCards, Pile fromPile) {
for (int i = 0; i < numOfCards; i++) {
Pile.newPile.add(i, fromPile.newPile.get(i)); // here is the error
}
}
}
错误是:
静态字段Pile.newPile应以静态方式访问。
任何人都在乎解释我做错了什么以及如何处理它?</ p>
答案 0 :(得分:1)
静态成员变量由它们所属的类的所有实例共享。由于newPhile
是静态的,因此您无需在每个单独的对象中对其进行编辑:
(http://itcareerworld.com/wp-content/uploads/2015/02/static-keyword-diagram-1.png)
因为它是静态的,所以只有一个副本。从变量和方法中删除静态,或者不要使其对象实例化,因为它已经在对象之间共享。我建议第一个。
当你说:
时,我注意到了你的评论无法对非静态字段Pile.newPile进行静态引用
如果你正在做这个选项,只要让一切都不是静态的(变量和方法)。
答案 1 :(得分:0)
静态变量可以在不使用引用变量的情况下以静态方法访问。您可以在不使用参考变量的情况下进行尝试。