![[bxd学习java基本点]13泛型类,泛型方法,当定义二种类型的泛型方法时,用迭代器的方法,第1张 [bxd学习java基本点]13泛型类,泛型方法,当定义二种类型的泛型方法时,用迭代器的方法,第1张](/aiimages/%5Bbxd%E5%AD%A6%E4%B9%A0java%E5%9F%BA%E6%9C%AC%E7%82%B9%5D13%E6%B3%9B%E5%9E%8B%E7%B1%BB%EF%BC%8C%E6%B3%9B%E5%9E%8B%E6%96%B9%E6%B3%95%EF%BC%8C%E5%BD%93%E5%AE%9A%E4%B9%89%E4%BA%8C%E7%A7%8D%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%B3%9B%E5%9E%8B%E6%96%B9%E6%B3%95%E6%97%B6%EF%BC%8C%E7%94%A8%E8%BF%AD%E4%BB%A3%E5%99%A8%E7%9A%84%E6%96%B9%E6%B3%95.png)
15-08
自定义的类中使用泛型,即为泛型类
class Worker{
}
class Student{
}
class Tool{
private Object obj;
public void setObject(Object obj){
this.obj=obj;
}
public Worker getObject(){
return obj;
}
}
//什么时间来定义泛型类呢?
当类中要 *** 作的引用数据类型不确定时
早期,定义Object来完成扩展
现在定义泛型来扩展
泛型的出现,不要再强转啊
把错误存在了编译时
class Utils<QQ>{
private QQ q;
publi void setObject(QQ q){
this.q=q;
}
public QQ getObject(){
return q;
}
}
class GenericDemo3{
public static void main(String[] args){
Tool t=new Tool();
t.setObject(new Worker());
t.getObject();
Utils<Worker> u=new Utils<Worker>();
}
}
15-09泛型方法
class Demo<T>{
public void show(T t){
sop("show:"+t);
}
}
//泛型类的定义的泛型,在整个类中有效,若此法使用,
//那么泛型类的对象一定要 *** 作
class Demo{
public<T> void show(T t){
sop("show:"+t);
}
public <T> void print(Q q){
sop("print:"+t);
}
}
class GenericDemo{
public static void main(String[] args){
Demo<Integer> d=new Demo<Integer>();
d.show(new Integer(4));
d.show(9);
d.show("fdfdffd");//失败了,若要 *** 作字符串,只能重新定义
Demo<String> b=new Demo<String>();
b.show("dddd");
b.show(5);//失败了。
//__________________使用泛型方法
Demo d=new Demo();
d.show("dfdffd");
d.show(new Integer(4));
d.print("ffd");
}
}
15-10静态方法泛型
15-11接口上
15-12泛型的高级使用
class GenericDemo6{
public static void main(String[] args){
ArrayList<String> al=new ArrayList<String>();
al.add("fdfd");
ArrayList<Integer> all=new ArrayList<Integer>();
all.add(4);
all.add(7);
all.add(1);
}
public static void print(ArrayList<String> al){
Integer<String> it=al.iterator();
while(it.hasnext()){
sop(it.next());
}
}
//此法,只能使用string, 不能用Integer.怎么办啊
呢??请使用?占位符
public static void print(ArrayList<?> al){
Integer<?> it=al.iterator();
while(it.hasnext()){
sop(it.next());
}
}
法二
public static<T> void print(ArrayList<T> al){
Integer<T> it=al.iterator();
while(it.hasnext()){
T t=it.next();//此得可以 *** 作的。。。。。
//sop(it.next().length());//此时?不能用
sop(it.next());
}
}
泛型限定,未听会
?通配符:也可理解为占位符
泛型的限定
?extends E:可以接收E类型或子类型
? super E:可以接收E类型或E的父类型
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)