老实说,我不知道谷歌的用途:
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>
答案 0 :(得分:1)
这是使用Generics的代码。
在这种情况下,您可以将SomeListFragment foo
声明为SomeListFragement<T> foo
,其中T是实现接口Fragment
和OnClickListener
的类。然后,当您调用instantiate
时,为target
类型的T
参数传入一个Object。
答案 1 :(得分:0)
括号中的内容定义了泛型类型T,它用作目标参数的类型。它说类型T可以是扩展Fragment类并实现OnClickListener接口的任何类型。
Google Java Generics for docs。
答案 2 :(得分:0)
小心! SomeListFragment在这里没有通用参数!唯一的参数化类型是T target
引用。程序员决定这个target
引用应该同时实现Fragment
和OnClickListener
接口(尽管他没有调用/使用方法体内target
的任何方法)。 / p>
由于它是静态方法,因此这是执行此操作的唯一方法。无法使用泛型参数声明类,因为它总是与实例绑定。