Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ジェネリックメソッドについて教えて頂きたいです

?の部分でキャストをしないで実装クラスを使用するにはどのように記述すればいいのでしょうか?
?の戻り値で(T)をしないでsubを戻そうとするとエラーになります。
ググってみたのですが、メソッドの戻り値や引数の扱いが載っているサイトがみつからなかったので、こちらで質問させて頂きます。
宜しくお願いします。


public class Sample {

    public static class Super<T> {

    }

    public static class Sub extends Super<Sub> {

    }

    public static class SuperChange {

        public <T> T action(Super<T> sp) {
            return null;
        }

    }

    public static class SubChange extends SuperChange {

        @Override
        public <T> T action(Super<T> sp) {

            Sub sub = (Sub)sp; //?

            return (T)sub;//?
        }

    }

    public static void main(String[] ss) {
        SubChange sc = new SubChange();
        sc.action(new Sub());
    }

}

1

回答

3396

閲覧

1件の回答

評価

0

Sub extends Super<Sub>
が何なのか分からない。どういう時にこんな宣言が?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。