码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA进阶-泛型

时间:2017-06-30 19:54:51      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:track   ted   size   大写   隐式   产生   new   引用   stack   

>泛型:泛型指代了參数的类型化类型,一般被用在接口。类。方法中
>作用:用来确定參数的范围,在书写代码的时候提前检查代码的错误性
>泛型的声明,下面给出类声明,依此类推:
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进阶-泛型

标签:track   ted   size   大写   隐式   产生   new   引用   stack   

原文地址:http://www.cnblogs.com/wzjhoutai/p/7100310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!