这是什么样的构造函数,从<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> 

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

  • 为什么使用newInstance来代替DialogFragment的构造函数?
  • 使用Kotlin自定义Android视图
  • 片段 - InstantiationException:没有空的构造函数 - >谷歌地图v2?
  • 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的更多信息。