首页 > 代码库 > JAVA进阶-泛型
JAVA进阶-泛型
>泛型:泛型指代了参数的类型化类型,一般被用在接口,类,方法中
>作用:用来确定参数的范围,在书写代码的时候提前检查代码的错误性
>泛型的声明,以下给出类声明,依此类推:
class ClassName<T>{}
class ClassName<K,V,O>{}
>通用符:<?>一般指定所有的类
>限定符:<T exteds 超类>
1)限定符字母只能被限定一次
2)当extends的时候只能使用大写字母,当super的时候只能使用"?"
3)在类中不能使用super限定符号。
4)在类中的限定符能被方法继续使用。
5)接口中声明时有限定符号,其子类也必须有。
class Book<T extends Number>{
public void go2(Stack<? super Number> stack2){
}
}
1.参数转换>
声明:
class Book<T extends Number>{}
引用:
Book<Number> numBook=new Book<Number>();
Book<Integer> numBook2=new Book<Integer>();
// 同一层级上的参数显式或者隐式的转换都是错误的
// numBook=(Book<Number>)numBook2;
2.比较和赋值:
声明:
class CompareClass<T>{
T a;
CompareClass(T t){
this.a=t;
}
}
比较:
CompareClass<Float> f=new CompareClass<Float>();
CompareClass<Integer> i=new CompareClass<Integer>();
f==i?这种结果会产生编译错误;
赋值:
f=i;?同样也会产生编译错误;
2.类型参数数组>
声明:
T[] t;
定义:
T[] t=new int[10];//编译错误
修改:
T[] t;
int[] in=new int[]{10,20};
t=in;
3.类型参数静态使用>由于类型参数只有在实例化的时候才确定类型,因此
如下的代码,把类型参数作为静态变量将会引发编译错误;
class Person<K,V>{
static K name;
static V age;
static V getName(){
return age;
}
>作用:用来确定参数的范围,在书写代码的时候提前检查代码的错误性
>泛型的声明,以下给出类声明,依此类推:
class ClassName<T>{}
class ClassName<K,V,O>{}
>通用符:<?>一般指定所有的类
>限定符:<T exteds 超类>
1)限定符字母只能被限定一次
2)当extends的时候只能使用大写字母,当super的时候只能使用"?"
3)在类中不能使用super限定符号。
4)在类中的限定符能被方法继续使用。
5)接口中声明时有限定符号,其子类也必须有。
class Book<T extends Number>{
void go(Stack<T> stack){
}
public void go2(Stack<? super Number> stack2){
}
}
1.参数转换>
声明:
class Book<T extends Number>{}
引用:
Book<Number> numBook=new Book<Number>();
Book<Integer> numBook2=new Book<Integer>();
// 同一层级上的参数显式或者隐式的转换都是错误的
// numBook=(Book<Number>)numBook2;
2.比较和赋值:
声明:
class CompareClass<T>{
T a;
CompareClass(T t){
this.a=t;
}
}
比较:
CompareClass<Float> f=new CompareClass<Float>();
CompareClass<Integer> i=new CompareClass<Integer>();
f==i?这种结果会产生编译错误;
赋值:
f=i;?同样也会产生编译错误;
2.类型参数数组>
声明:
T[] t;
定义:
T[] t=new int[10];//编译错误
修改:
T[] t;
int[] in=new int[]{10,20};
t=in;
3.类型参数静态使用>由于类型参数只有在实例化的时候才确定类型,因此
如下的代码,把类型参数作为静态变量将会引发编译错误;
class Person<K,V>{
static K name;
static V age;
static V getName(){
return age;
}
}
JAVA进阶-泛型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。