java - 如何根据对象的实例进行重载?

标签 java operator-overloading instanceof

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

重做您的动物园,使其能够分别存放野生动物和家养动物。 因此,您的 Zoo 类将可能/大概有两个不同的 add() 方法。 一个接收实现野生动物接口(interface)的 Animal 对象,另一个接收实现家养动物接口(interface)的 Animal 对象的 add() 方法。

我该怎么做?

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

不会编译。也没有

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

实际上,可以使用instanceof在add()中执行if语句,但他特别要求两个互相重载的add()方法。我该怎么做呢?或者,这是不可能的吗?我的老师试图用“可能/大概”来扰乱我?

最佳答案

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

您现在应该有足够的信息来编写此代码。

附录 (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 接口(interface)的 Animal 对象,另一个接受 实现 Domestic 接口(interface)的 Animal 对象。

关于java - 如何根据对象的实例进行重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375637/

相关文章:

java - 将 double 转换为 byte[] 数组

c++ - 使用动态内存的集合并集

c# - 为什么 `bool?` 上没有解除短路运算符?

java - Java中迭代父类ArrayList时使用子类方法

java - Mahout-Run Als-Wr推荐者评估程序

java - Maven 和 JavaDoc : install additional (generated) files

javascript instanceof 从字符串名称获取类型

C# 和 ReSharper : Checking an object's type

java - 如何在 Java 异常消息中包含用户输入?

c++ - 错误 : passing ‘const Complex’ as ‘this’ argument of '....' discards qualifiers