Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果有一个变量为x的类的实例_Java - Fatal编程技术网

Java 如果有一个变量为x的类的实例

Java 如果有一个变量为x的类的实例,java,Java,我想做的是检查Dude类的几个实例(例如)中是否至少有一个对于某个变量有某个值,比如 public boolean isFat(Dude d) { // checks weight and returns boolean } ... for (i = 0; i < DudeList.size(); i++) { if (isFat(DudeList.get(i)) { //do your stuff } } public boolean isF

我想做的是检查Dude类的几个实例(例如)中是否至少有一个对于某个变量有某个值,比如

public boolean isFat(Dude d) {
    // checks weight and returns boolean
}

...

for (i = 0; i < DudeList.size(); i++) {
    if (isFat(DudeList.get(i)) {
        //do your stuff
    }
}
public boolean isFat(Dude d){
//检查权重并返回布尔值
}
...
对于(i=0;i
DudeList
将是
Dude
中的一个静态
ArrayList
引用,它为每个构造函数添加一个
Dude
实例,我想你知道诀窍


但我想知道是否有更简单的方法?这似乎有点草率。因为我可能有138174917个Dude实例,只有一两个是胖的

如果你不想这样迭代,那么最好的办法可能是对那些“胖”的类进行外部计数。通常,您会在类中的静态变量中执行此操作,并且应该在setter中为该变量增加计数

public class Dude{
    static int nFats = 0;

    public void setFat(){
        Dude.nFats++;
    }
}

如果你想更安全(在这种情况下可能更正确),你也可以使用专门为线程安全计数器设计的。你可以将这两类分开,保留一个胖子列表和一个非胖子列表(顺便说一句,我认为你的例子很差劲——我相信你能想出一个更明智的例子).但我们不知道这是否会因为其他原因而成为问题。实际上,我们没有足够的上下文来回答。我建议使用这样的静态字段很少是个好主意。如果有138174917个dudes,你必须检查每个人才能知道,你可以在构造函数/更改权重中将他们分开。我认为你应该这样做解释你想要达到的目标,这样我们就可以提出更好的方法。正如许多人所说,这闻起来真的很糟糕。@JonSkeet啊;我错过了结束括号。嗯,
AtomicInteger
?另外,不需要
Dude
分类器,但这是我的风格问题guess@fge.我排除了原子积分对于Dude分类器,我只是认为它是一种设置静态变量的更清晰的方法(特别是在一段时间没有看到代码之后).嗯,我想知道的是,是否有一个内置的方法,可以让我在不检查其他所有“Dude”实例的情况下选择“Fat”的“Dudes”。我确实需要ArrayList,而不仅仅是一个原语,因为我必须调用“Fat Dudes”的方法。无论如何,谢谢。我想我想要的方法根本不存在。。。合理的想法。这种方法的问题是,如果一个家伙节食,你需要减少Dude.nFats。如果一个家伙在狂饮节食,然后大口喝啤酒和比萨饼,你需要减少然后增加。根据使用情况,可能最简单的方法是迭代列表。@user949300,只要通过如果是getter/setter,那么最多应该有2个,也许是3个方法来递增/递减变量。