我对Java有一个非常简单的问题,但解释它并不像我预期的那么简单。基本上,我想检查某个类中是否存在任何对象。一个例子:
我有一个Animal类,我有两个子类,Cat和Dog。在运行程序时,我想知道是否存在任何狗或猫。我知道我创造了一只狗,或者一只猫,但我不知道哪只狗。如果它们存在与否,我可以检查我在之前的代码中创建的所有猫和狗,但它不仅是一个丑陋的,而且是一个愚蠢的解决方案。
那么,有没有一种很好的方法可以知道目前是否有狗或猫?
提前致谢!
答案 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();
请注意,根据您生产的狗的特征,您可以使用不同的计数器(例如,如果您的工厂允许您选择要生产的狗的颜色,种族,性格,大小)