【发布时间】:2018-10-25 19:46:20
【问题描述】:
通过建议使用 switch 或 if-else 语句来回答所有其他此类问题,我想完全避免。 所以我有一个带有两个重载方法的客户端类,它们使用某些接口实现的两个不同实例。为简单起见:
public interface MyInterface<R extends Register> {
Object myServiceMethod(R register);
那么有一个客户端有两个方法
public Double methodName(Class1 name1)
public Double methodName(Class2 name2)
Class1 和 Class2 都实现了 Register。而我在 MyService 实现中需要做的是调用正确的方法而不知道它会先验哪个类
public class MyServiceImplementation implements MyInterface<Register>{
@Override
public Object myServiceMethod(Register myRegister){
return myClient.methodName(*and here is a place for magic)
}
我需要做类似的事情:
return myClient.methodName((myRegister.getClass()) myRegister);
但由于这是非法的 - 我的问题就在这里。
【问题讨论】:
-
试试
myRegister.getClass().cast(myRegister) -
Class1 和 Class2 扩展同一个基类吗?方法的实现有什么不同吗?
-
为什么不使用 Object 类?然后将其转换为相应的类。
-
对不起,忘了说Class1和Class2都实现了Register
-
那么你为什么要区分它们呢?