使用范型


范型的作用:类型安全检查,不用对集合中的对象进行手动类型转换。


1.Generics类
public class ArrayList<E> extends AbstractList<E> { 
 // details omitted 
 public void add(E element) {
    // details omitted5 
 } 
 public Iterator<E> iterator() {  
    // details omitted8 
 }
}

用String绑定在E上,当我们用add(E element)方法向ArrayList中增加对象时, 那么就像下面的写法一样: public void add(String element);因为在ArrayList所有方法都会用String来替代E,无论是方法的参数还是返回值。

public class C1<T extends Number> { }
public class C2<T extends Person & Comparable> { }
第一个T变量必须继承Number,第二个T必须继承Person和实现Comparable


2.Generics方法
public <T extends Comparable> T max(T t1, T t2) {
  if (t1.compareTo(t2) > 0)
     return t1;
  else return t2;
}

max方法的参数类型为单一的T类型,而T类型继承了Comparable,max的参数和返回值都有相同的超类。

Integer iresult = max(new Integer(100), new Integer(200));
String sresult = max("AA", "BB");
Number nresult = max(new Integer(100), "AAA"); // does not compile

 

3.通配符
(1)使用?通配符,匹配所用的类类型
void printCollection(Collection<?> c) {
 for (Object e : c) {
   System.out.println(e);
 }
}

(2)有界通配符: <T extends Number>(上界,Number,Number及其子类) <T super Number>(下界Number及其父类)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值