它为以下类型的问题提供了Java解决方案:具有一个在一个参数上有所不同的重载方法。如果将不同的参数作为null传入,该怎么办?
class PersonFactory {
public static Person create(String firstname, String lastname, String age) {
return create(firstname, lastname, Integer.valueOf(age));
}
public static Person create(String firstname, String lastname, Integer age) {
Person p = new Person();
p.setFirstname(firstname);
p.setLastname(lastname);
p.setAge(age);
return p;
}
}
PersonFactory.get("John", "Doe", null); //ambigous mapping
Run Code Online (Sandbox Code Playgroud)
我以为可以通过Optional.empty()这里,但是没有定义的类型,因此不能用来选择正确的方法...
您需要强制转换null为所需的类型,以便编译器可以解决歧义。
例如:
PersonFactory.get("John", "Doe", (String) null);
Run Code Online (Sandbox Code Playgroud)
要么
PersonFactory.get("John", "Doe", (Integer) null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |