java中的void重载

java中的void重载,java,overloading,Java,Overloading,各位!! 我在同一个类中有两个重载方法 如果我运行下面的代码,我会得到错误“该方法对于类型水果列表是不明确的” 我不能这样做: sample.getFruit((Fruit)null); 这也不是: sample.getFruit((String)null); 我无法更改sample.getFruit(null) 我怎样才能解决这个问题 sample = new FruitList(null); sample.getFruit(null);------> error 在这种情况下,

各位!! 我在同一个类中有两个重载方法

如果我运行下面的代码,我会得到错误“该方法对于类型水果列表是不明确的”

我不能这样做:

sample.getFruit((Fruit)null);
这也不是:

sample.getFruit((String)null);
我无法更改
sample.getFruit(null)

我怎样才能解决这个问题

sample = new FruitList(null);

sample.getFruit(null);------> error

在这种情况下,您需要帮助编译器一点。由于
null
对于
Game
String
都是有效值,因此您需要指示编译器您指的是这两种方法中的哪一种

所以

sample.getFruit((Game) null);


As
Game
String
输入变量都可以替换为
null
。编译器无法决定必须调用哪个方法

所以,您可以通过手动将类型转换为变量,显式地告诉编译器它必须调用哪个方法,如下所示:

sample.getFruit((Game) null);


sample.getFruit((游戏)null)
sample.getFruit((字符串)null)
。。。或者不要调用一个方法
getXZY(…)
,如果它没有返回任何东西…以及告诉您如何说服编译器调用您想要的方法的答案,我强烈建议您更改这些方法。前缀为
get
的方法不返回某些内容是非常罕见的。通常,重载用于基本上做相同事情的方法,只是以不同的方式表达它们的输入-这里看起来不是这样。请注意,您遇到的问题实际上与
void
返回类型无关。这是否回答了您的问题?感谢您的快速回复!你有没有不使用(游戏)或(字符串)的其他解决方案?我能想到的唯一其他方法是使用中间变量<代码>游戏=空;示例:getFruit(游戏)感谢您的快速响应!你有没有不使用(游戏)或(字符串)的其他解决方案??
sample.getFruit((Game) null);
sample.getFruit((String) null);
sample.getFruit((Game) null);
sample.getFruit((String) null);