我有一个抽象类Client
和4个孩子Client1
Client2
......
每个客户行:
response = service.iszr(params);
其中响应和参数取决于类
Class1中的是
Client1ResponseType response
Client1params params
现在我想添加到抽象类方法:
protected abstract void sendRequest(?? response, ?? params);
但我不知道应该是什么类型
我试着这样想:
protected abstract <I, O> void sendRequest(I input, O output);
和孩子们
@Override
protected <Client1ResponseType, Client1params> void sendRequest(Client1ResponseType input,
Client1params output) {
output = service.iszrRobCtiAifo(input);
}
但没有成功。有编译错误。我做错了什么?
答案 0 :(得分:0)
我无法完全理解你究竟想要做什么。
但有些方法你想让它变得通用吗?
尝试对象
protected abstract void sendRequest(Object response, Object params);
您可以将此变体扩展到其他代理,例如Object[]
答案 1 :(得分:0)
在抽象类的声明中,您需要添加:
abstract class Client <I extends SOME_CLASS1, O extends SOME_CLASS2>
其中SOME_CLASS1是您的第一个参数的子类型,SOME_CLASS2是您的第二个参数的子类型,如果需要,两者都可以是Object
。
你的抽象方法是这样的:
protected abstract void sendRequest(I response, O params);
扩展类时,需要指定以下类型:
class Client1 extends Client <Client1ResponseType, Client1params>
如果您有任何问题,请告诉我。