泛型方法返回类型是map也可以在同一时间返回对象

时间:2018-05-25 03:12:34

标签: java

我有以下界面

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

    }
}

1 个答案:

答案 0 :(得分:0)

Oracle's Java tutorial here中所述:

  

子类覆盖方法的能力允许类从行为“足够接近”的超类继承,然后根据需要修改行为。覆盖方法具有相同的名称,参数的数量和类型,以及返回类型作为它覆盖的方法。重写方法还可以返回由重写方法返回的类型的子类型。此子类型称为协变返回类型。

因此,重写方法不能返回超类的返回类型,只能返回子类。