这是什么样的构造函数,从<T extends Drawable&DrawerToggle>开始?

<T extends Drawable & DrawerToggle> ActionBarDrawerToggle( Activity activity, Toolbar toolbar, DrawerLayout drawerLayout, T slider, @StringRes int openDrawerContentDescRes, @StringRes int closeDrawerContentDescRes) { 

在浏览ActionBarDrawerToggle.java类的源代码的过程中,我发现这个构造函数声明为没有访问说明符。 相反,它的声明开始于

 <T extends Drawable & DrawerToggle> 

请解释一下,这是什么意思?

Solutions Collecting From Web of "这是什么样的构造函数,从<T extends Drawable&DrawerToggle>开始?"

T是genericstypes声明,然后用作其中一个参数的types – slider

<T extends Drawable & DrawerToggle >具体表示T必须扩展/实现DrawableDrawerToggle类/接口。

访问说明符不是必需的。 如果缺less它,则意味着类/方法只能从同一个包中的类访问。

像一般的方法一样,构造函数可以使用types参数。 这在Java语言规范的这一部分中提到:

https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8

从这里提到的语法,你可以在签名中有types参数:

TypeParameters:

< TypeParameterList >

TypeParameterList:

TypeParameter {, TypeParameter}

并在其中TypeParameter被指定为

TypeParameter:

{TypeParameterModifier} Identifier [TypeBound]

TypeParameterModifier:

Annotation

TypeBound:

extends TypeVariable

extends ClassOrInterfaceType {AdditionalBound}

AdditionalBound:

& InterfaceType

此块指定slider参数types( slider参数的值必须扩展drawable和drawabletoggle类(或接口))。 searchgenerics的更多信息。