【问题标题】:Moving and deleting ArrayList entries [duplicate]移动和删除 ArrayList 条目 [重复]
【发布时间】:2016-03-04 21:17:20
【问题描述】:

我正在使用桩。就我而言,桩是包含 Card ArrayLists 的对象。我将使用超过 1 个,每个都有不同的用途。


我在这里尝试做的是两种方法:

getCards:将 Object 引用从一个 Pile 移动到另一个 Pile

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 应该以静态方式访问。


有人愿意解释我做错了什么,我该如何处理?

【问题讨论】:

  • newPilestatic。这意味着只有一个ArrayList ,而不是每个Pile 都有一个ArrayList
  • @PaulBoddington 从 newPile 中删除 static 给了我“无法对非静态字段 Pile.newPile 进行静态引用”并且没有消除最初的问题。
  • 在尝试提出更多问题之前,请阅读How do I ask a good question?

标签: java arraylist static


【解决方案1】:

静态成员变量由它们所属的类的所有实例共享。因为newPhile 是静态的,所以您不需要在每个单独的对象中编辑它:

(http://itcareerworld.com/wp-content/uploads/2015/02/static-keyword-diagram-1.png)

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

你说的时候我注意到了你的评论:

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

如果您正在执行该选项,只需将所有内容设为非静态(变量和方法)即可。

【讨论】:

  • 伙计,我从newPile和方法中删除了它,但是“无法进行静态引用...”现在在这两种方法中,在for语句的开头循环(Pile.newPile.....)
  • 静态方法属于类,非静态方法属于类的实例。现在还用对象调用方法吗,因为不是静态的,所以现在需要使用对象。
  • @NickTritsis 现在你明白了吗?如果我的回答有点帮助,请标记我的回答为最佳答案。如果您还有其他问题,请不要害怕问我很乐意为您提供帮助
  • 谢谢伙计,我明白了。我真的很高兴你解释了静态修饰符,因为我一开始并没有给予它适当的关注,但现在我很清楚 :) 你会得到最好的答案并为此投票,别担心,我知道stackoverflow是如何工作的:)另外,如果你不介意,我也不想为这样一个小问题得到一个负面的问题分数:-/再次感谢您的帮助^^编辑:没有足够的代表进行投票,但它被标记为最佳答案^^
  • @NickTritsis 我赞成你的问题......我知道你的感受。目前,由于我在thisthis 上收到过多的反对票,我有被禁止提问的风险,而阻止消息显示的唯一方法是在这些问题上获得更多的喜欢......无论如何,我喜欢你的问题,很高兴能帮助你。请向我寻求更多帮助!
【解决方案2】:

静态变量可以在静态方法中访问,而无需使用引用变量。不使用引用变量也可以试试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2021-11-03
    • 2018-05-29
    • 2018-10-16
    • 2010-12-17
    相关资源
    最近更新 更多