【发布时间】:2016-11-08 11:45:13
【问题描述】:
public static void main(String args[]) {
List<Double> doubleList = new ArrayList<>();
doubleList.add(new Double(101.215D));
doubleList.add(new Double(102.215D));
doubleList.add(new Double(103.215D));
printIntValue1(doubleList);
System.out.println("*******");
printIntValue2(doubleList);
}
//bounded parameter
public static <T extends Number> void printIntValue1(List<T> list){
for(T num : list){
System.out.println(num.intValue());
}
}
//Wildcard parametr
public static void printIntValue2(List<? extends Number> list){
for(Number num : list){
System.out.println(num.intValue());
}
}
与上述两种方法一样,都给出相同的结果。 谁能告诉我是否所有的工作都已经由有界类型完成,那么为什么会有通配符的概念?通配符是否有其他一些有界类型没有的工作?
【问题讨论】:
-
在 Java 中,泛型只为您提供编译时安全和检查,仅此而已。在第一种情况下,您有一个
T可以用来表示您的特定类型,在第二种情况下,您没有;就是这样。
标签: java