移动和删除ArrayList条目

时间:2015-12-01 03:33:32

标签: java arraylist static

我正在使用桩。在我的情况下,桩是包含卡阵列列表的对象。我将使用超过1个,每个都与他们的目的不同。

我在这里要做的是制作两种方法:

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>

2 个答案:

答案 0 :(得分:1)

静态成员变量由它们所属的类的所有实例共享。由于newPhile是静态的,因此您无需在每个单独的对象中对其进行编辑:

enter image description herehttp://itcareerworld.com/wp-content/uploads/2015/02/static-keyword-diagram-1.png

因为它是静态的,所以只有一个副本。从变量和方法中删除静态,或者不要使其对象实例化,因为它已经在对象之间共享。我建议第一个。

当你说:

时,我注意到了你的评论
  

无法对非静态字段Pile.newPile进行静态引用

如果你正在做这个选项,只要让一切都不是静态的(变量和方法)。

答案 1 :(得分:0)

静态变量可以在不使用引用变量的情况下以静态方法访问。您可以在不使用参考变量的情况下进行尝试。