我有以下界面
interface applyBuisnessRule<T> {
public T execute(String jobCode) throws Exception;
}
下面的是它的实现
class CardvaletImpl<T> implements applyBuisnessRule<T> {
private static final String Success = null;
public T execute(String jobCode) throws Exception {
T result = null;
// put your logic
return result;
}
}
那就是代码将如何从调用者类
中排除CardvaletImpl<String> cardvaletImpl = new CardvaletImpl<>();
String result = cardvaletImpl.execute("JOBCODE");
现在让我们说如果上面的类必须返回地图,如下面的场景所示,那么告诉我如何将地图放入结果类型 是泛型类型,将返回调用者以及调用者将如何知道映射进入结果对象,因为接口是泛型类型,并且接口中的方法返回也是泛型类型的对象
class CardvaletImpl<T> implements applyBuisnessRule<T> {
private static final String Success = null;
Map<String, Integer> myMap = new HashMap<String, Integer>(); // ****Map that i want to return from this class to caller class ***
myMap.put("A",23);
myMap.put("A",45);
public T execute(String jobCode) throws Exception {
T result = null;
// ** advise how i will put the map into object that is into result and return to the caller
}
}
答案 0 :(得分:0)
如Oracle's Java tutorial here中所述:
子类覆盖方法的能力允许类从行为“足够接近”的超类继承,然后根据需要修改行为。覆盖方法具有相同的名称,参数的数量和类型,以及返回类型作为它覆盖的方法。重写方法还可以返回由重写方法返回的类型的子类型。此子类型称为协变返回类型。
因此,重写方法不能返回超类的返回类型,只能返回子类。