java - 允许不同的参数而不重载方法?

标签 java overloading

已解决:谢谢大家的帮助,我最终像你们几个人说的那样重写了 Person 中的方法。我的问题是 Character 甚至没有 doSomething,所以我最终做的只是简单地向 character 添加 doSomething 并且什么都不返回。这是因为我只需要担心 a(a).doSomething(b)(a character) 的情况。

因此,我有一个采用两个参数的方法,字符 a 和字符 b。

 public static void giveMessage(Character a, Character b)

如果参数是 Person a(角色的子类),Character b,我希望此方法也有效

 public static void giveMessage(Person a, Character b)

我知道我可以通过重载方法来做到这一点,但它后面有大约 15 行代码。因此,如果我将它重载 3 次,它就会变得冗长。这样做我真的没有问题,我只是想知道是否有更简单的方法。

更多信息:

giveMessage(Character a, Character b){
    if(a instanceof Person){
       a.doSomething(b) 

doSomething 只能在 Person 中找到,所以它给我一个错误,它无法在 Character 中找到它。

最佳答案

public static void giveMessage(Character a, Character b)

应该适用于 Persons 因为它是一个隐式转换

http://en.cppreference.com/w/cpp/language/implicit_cast (我知道它的 C++,但这也适用于 Java)

它会自动将一个人转换成一个角色

关于java - 允许不同的参数而不重载方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914703/

相关文章:

java - Throwable 的哪个子类应该被捕获,哪些不应该被捕获?

java - 使用 ClassLoader 加载资源

.net - VB.NET 编译器如何选择要运行的扩展重载?

c++ - 关于重载->运算符中const关键字具体位置的问题

c++ - 模板重载导致链接器错误/奇怪的行为

java - 禁用 jnilib 的部署

java - 返回图像资源 ID

c# - 重载构造函数/方法最优雅的方法是什么?

c# - 带有参数数组的通用 C# 方法重载解析

java - Spark查找连续时间范围