Vik*_*dar 18 java android constructor
<T extends Drawable & DrawerToggle> ActionBarDrawerToggle(
Activity activity,
Toolbar toolbar,
DrawerLayout drawerLayout,
T slider,
@StringRes int openDrawerContentDescRes,
@StringRes int closeDrawerContentDescRes) {
Run Code Online (Sandbox Code Playgroud)
在浏览ActionBarDrawerToggle.java类的源代码期间,我发现这个构造函数是在没有访问说明符的情况下声明的.相反,它的声明始于
<T extends Drawable & DrawerToggle>
Run Code Online (Sandbox Code Playgroud)
请解释一下,它究竟意味着什么?
Zby*_*000 23
T是泛型类型声明,然后用作其中一个参数的类型 - slider.
<T extends Drawable & DrawerToggle >特别是指T必须扩展/实现两者Drawable和DrawerToggle类/接口.
访问说明符不是必需的.如果缺少它,则意味着只能从同一个包中的类访问类/方法.
与普通方法一样,构造函数可以采用类型参数.这在Java语言规范的这一节中提到:
https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8
根据那里提到的语法,您可以在签名中包含类型参数:
TypeParameters:<
TypeParameterList>
TypeParameterList:
TypeParameter {, TypeParameter}
以及TypeParameter指定的位置
TypeParameter:
{TypeParameterModifier} Identifier [TypeBound]
TypeParameterModifier:
Annotation
TypeBound:
extendsTypeVariable
extendsClassOrInterfaceType {AdditionalBound}
AdditionalBound:
&InterfaceType
| 归档时间: |
|
| 查看次数: |
1418 次 |
| 最近记录: |