bugfix> 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 件
  • ここでOracleのJavaチュートリアルで述べたように:

    The ability of a subclass to override a method allows a class to inherit from a superclass whose behavior is "close enough" and then to modify behavior as needed. The overriding method has the same name, number and type of parameters, and return type as the method that it overrides. An overriding method can also return a subtype of the type returned by the overridden method. This subtype is called a covariant return type.

    そのため、オーバーライドするメソッドは戻り型のスーパークラスを返すことはできず、子クラスのみを返すことができます。

あなたの答え