1

私は正直に何をググるのかわかりません:

public static <T extends Fragment & OnClickListener> SomeListFragment instantiate(
        T target, int requestCode, DataSource<ResultItem> dataSource, int position) {

    SomeListFragment fragment = new ExposeListFragment();

    return fragment;
}

これはSomeListFragmentクラスにあります。(新しいSomeListFragment()の代わりに)SomeListFragmentを返すのは静的メソッドであることは理解していますが、括弧内のものは何ですか?

<T extends Fragment & OnClickListener>
4

3 に答える 3

2

これは Generics を使用するコードです。

SomeListFragment fooこの場合、 yourを as として宣言します。SomeListFragement<T> fooここで、T はインターフェイスFragmentおよびを実装するクラスですOnClickListener。次に、呼び出すときに、型の引数にinstantiateObject を渡します。targetT

于 2013-02-13T17:04:18.617 に答える
0

括弧内のものは、ターゲット引数の型として使用されるジェネリック型 T を定義します。型 T は、Fragment クラスを拡張し、OnClickListener インターフェイスを実装する任意の型であることができます。

ドキュメント用の Google Java Generics。

于 2013-02-13T17:02:14.317 に答える
0

気をつけて!SomeListFragment には、ここにジェネリック パラメータはありません。パラメータ化された型はT target参照のみです。プログラマーは、この参照でとインターフェースtargetの両方を実装する必要があると判断しました (ただし、メソッド本体内からメソッドを呼び出したり使用したりすることはありません)。FragmentOnClickListenertarget

これは静的メソッドであるため、これを行う唯一の方法です。これは常にインスタンスに関連付けられているため、ジェネリック パラメーターを使用してクラスを宣言することはできません。

于 2013-02-13T18:20:07.893 に答える