检查Java中的某些现有对象

时间:2014-09-23 18:10:30

标签: java class object

我对Java有一个非常简单的问题,但解释它并不像我预期的那么简单。基本上,我想检查某个类中是否存在任何对象。一个例子:

我有一个Animal类,我有两个子类,Cat和Dog。在运行程序时,我想知道是否存在任何狗或猫。我知道我创造了一只狗,或者一只猫,但我不知道哪只狗。如果它们存在与否,我可以检查我在之前的代码中创建的所有猫和狗,但它不仅是一个丑陋的,而且是一个愚蠢的解决方案。

那么,有没有一种很好的方法可以知道目前是否有狗或猫?

提前致谢!

2 个答案:

答案 0 :(得分:3)

这是一个真正简单的方法......

假设猫和狗永远不会死(正如我的孩子所希望的那样),那么每个班级都可以有一个静态计数器。

class Dog extends Animal {
  private static int liveOnes = 0;

  public Dog() {
    liveOnes++;
  }

  public static int getHowManyAlive() { return liveOnes; }
}

然后您可以使用

检查是否存在任何狗
Dog.getHowManyAlive() > 0

如果他们死了,那么你需要明确杀死他们并减少计数。

答案 1 :(得分:0)

使用工厂DP的解决方案:

public class DogFactory {

  private int producedDogsCount;

  public DogFactory() {
    this.producedDogsCount = 0;
  }

  public Dog produceDog() {
    this.producedDogsCount++;
    return new Dog();
  }

  public int getProducedDogsCount() {
    return this.producedDogsCount;
  }
}

然后要生产狗,你需要工厂:

DogFactory dogFactory = new DogFactory();

需要调用produceDog()方法:

Dog myDog = dogFactory.produceDog();

为了知道您生产了多少只狗,请问狗工厂:

int producedDogsCount = dogFactory.getProducedDogsCount();

请注意,根据您生产的狗的特征,您可以使用不同的计数器(例如,如果您的工厂允许您选择要生产的狗的颜色,种族,性格,大小)