java泛型问题
ringa_lee
ringa_lee 2017-04-17 15:06:07
0
6
249

有如下一个类:

public class BaseDao<T> {

    
    public <E> Page<E> find(Page<E> page, String qlString) {
        return find(page, qlString, null);
    }

    public T get(String id){
        
       return (T)getById(id); 
    }
}

对于get方法中的T,我能够理解,即外部传入的参数化类型
但是对于find方法中的E,表示不太理解,如果是简单的规范参数,为什么在返回类型的前面还要加一个<E>
求解惑

ringa_lee
ringa_lee

ringa_lee

全員に返信(6)
刘奇

最初のメソッドはジェネリック メソッドです (パラメーター リストでは 1 つ以上のジェネリック型が使用されます)。() メソッドのパラメーター リストで使用されるジェネリック型はメソッドの前にリストされます。

https://docs.oracle.com/javase/tutorial/extra/generics/methods.html
http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html

いいねを押す +0
PHPzhong

この E 型はクラス定義で指定されたジェネリック型 T ではないため

いいねを押す +0
黄舟

Javaメソッドの汎用パラメータは戻り値の前に記述されます。メソッド名の後にはc#が記述されます。

いいねを押す +0
巴扎黑

うーん、私の理解が間違っていたかどうかはわかりません。 。
get の T は正規パラメータではありませんが、戻り値の型が T であることを宣言していますよね?

page 関数は、パラメーターにページがあることのみを指定しており、ページ自体はタイプ E です

いいねを押す +0
小葫芦

これは汎用メソッドです。つまり、型パラメータが E である Page を受け取り、Page を返します

いいねを押す +0
阿神

find メソッドのパラメータと戻り値の型はどちらも Page ですが、この Page も汎用です。書かなくても実行できますが、警告が表示されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート