你如何重载依赖于对象是什么的实例?

How do you overload dependent on what an object is an instance of?

我被指示创建两个使彼此重载的方法。一个应该在一个数组中存储一个对象,另一个应该在另一个数组中存储一个对象。作业如下:

重做你的动物园,让它能够分开存放野生动物和家养动物。 因此,您的 Zoo class 将 probably/presumably 有两种不同的 add() 方法。 一个接收实现野生动物接口的 Animal 对象和一个接收实现家畜接口的 Animal 对象的 add() 方法。

我该怎么做?

Class Zoo {
...
void add(Animal foobar instanceof Wild){
[...]
}
[...]

不会编译。也没有

Class Zoo {
...
void add(Animal foobar implements Wild){
[...]
}
[...]

实际上,可以使用 instanceof 在 add() 中执行 if 语句,但他特别要求两个彼此重载的 add() 方法。我该怎么做呢?或者,这是不可能的,我的老师试图通过说 probably/presumably?

来打扰我

关键是提供两种add()方法,一种采用一种类型的参数(一种wildlife动物类型),另一种采用另一种类型的参数参数(家养 动物类型)。

你现在应该有足够的信息来编码了。

附录 (2016 年 3 月)

例如,您可以使用以下代码:

class Animal { ... }

interface Wildlife { ... }
interface Domestic { ... }

class WildAnimal
    extends Animal
    implements Wildlife
{ ... }

class DomesticAnimal
    extends Animal
    implements Domestic
{ ... }

class Zoo
{
    void add(WildAnimal beast) { ... }
    void add(DomesticAnimal beast) { ... }
}

两个 Zoo.add() 方法都接受 Animal 类型的参数。但是一个接受一个实现了Wildlife接口的Animal对象,另一个接受 实现 Domestic 接口的 Animal 对象。