jdk 1.5 中, class Foo<T> {} 中的T是表示什么呢? RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 范型,使用这个类时编译器会提示你使用类似于 T<Object> t = new T<Object>();的方式 jdk1.5引用了C++的泛型,T可以是任意类型. 是在J2SE 5.0新加入的特性 "泛型"<转帖>[J2SE 5.0专题][2.1]泛型大凡用过C/C++的朋友对“泛型”这个词都不会陌生吧?我相信有过一些Java编码经验的朋友或多或少也遇到过使用集合类的方法时必须要手工做类型转换的情况。看下面的例子:import java.util.ArrayList;import java.util.Iterator;public class MyGenerics { public static void main(String[] args) { useNonGenerics(); useGenerics(); } private static void useNonGenerics() { ArrayList aList = new ArrayList(); aList.add(new Integer(7)); aList.add(new Integer(17)); int sum = 0; Iterator iter = aList.iterator(); while (iter.hasNext()) { sum += ((Integer)iter.next()).intValue(); } System.out.println(sum); } private static void useGenerics() { ArrayList<Integer> aList = new ArrayList<Integer>(); aList.add(new Integer(7)); aList.add(new Integer(17)); int sum = 0; Iterator<Integer> iter = aList.iterator(); while (iter.hasNext()) { sum += iter.next().intValue(); } System.out.println(sum); }}在这个例子中我提供了两个不同方法来完成同样的事,例子本身有没有意义不重要,我只是想让你看到一些实际在Java中使用泛型的代码。泛型的好处在于它可以避免那些我们本不需要去考虑的类型转换,并且可以提供编译期的类型安全检查。(注意,在上面的例子中,如果不使用泛型,那么我们可以把iter.next()返回的对象转换成任意类型,然后调用那个类型的方法而不会抛出任何编译期异常)同时,泛型的引入也为模板类和模板方法的出现奠定了基础。如果有时间,建议大家把新的java.util.Collection的源码拿下来看一看,你完全可以实现自己的支持泛型的API。 不好用.不知道是我的实现有问题否?比如说 写一个Comparator的子类里面的比较方法public class NodeComparator<T> implements Comparator<T>{}public int compare(T o1, T o2) {// if(T.class instanceof Node.class) // return ((String)o1).compareTo((String)o2);// return ((String)o1).compareTo((String)o2); }因为是T 所以无法判断运类型.所以不能检查.但是 如果直接 转化为String类型是不安全的 对于一个非我需要的类进行比较 序列化与反序列化问题,为什么两个对象不相等 Java工程师的认证 怎么让链表按照竖着的格式输出? 请大侠们指导学习方法 byte t = (r >> 24) & 0xFF;是什么意思呀? 请教各位大侠,泛型数组如何定义和使用,我的定义方法有什么不对? 有没有直接改变类名的语句?在线等 一道面试题,大家看一看 在java中怎么得到系统的环境变量 有谁知道怎样对java做的系统进行硬狗加密? 有人做过这样的方法吗?输入"中国"输出 "zhong guo"记得去年在 csdn上看过,但是现在找不到了,大家帮忙找下谢谢 编译问题!!!
[J2SE 5.0专题][2.1]泛型
大凡用过C/C++的朋友对“泛型”这个词都不会陌生吧?我相信有过一些Java编码经验的朋友或多或少也遇到过使用集合类的方法时必须要手工做类型转换的情况。看下面的例子:import java.util.ArrayList;
import java.util.Iterator;public class MyGenerics { public static void main(String[] args) {
useNonGenerics();
useGenerics();
}
private static void useNonGenerics() {
ArrayList aList = new ArrayList();
aList.add(new Integer(7));
aList.add(new Integer(17));
int sum = 0;
Iterator iter = aList.iterator();
while (iter.hasNext()) {
sum += ((Integer)iter.next()).intValue();
}
System.out.println(sum);
}
private static void useGenerics() {
ArrayList<Integer> aList = new ArrayList<Integer>();
aList.add(new Integer(7));
aList.add(new Integer(17));
int sum = 0;
Iterator<Integer> iter = aList.iterator();
while (iter.hasNext()) {
sum += iter.next().intValue();
}
System.out.println(sum);
}
}在这个例子中我提供了两个不同方法来完成同样的事,例子本身有没有意义不重要,我只是想让你看到一些实际在Java中使用泛型的代码。泛型的好处在于它可以避免那些我们本不需要去考虑的类型转换,并且可以提供编译期的类型安全检查。(注意,在上面的例子中,如果不使用泛型,那么我们可以把iter.next()返回的对象转换成任意类型,然后调用那个类型的方法而不会抛出任何编译期异常)同时,泛型的引入也为模板类和模板方法的出现奠定了基础。如果有时间,建议大家把新的java.util.Collection的源码拿下来看一看,你完全可以实现自己的支持泛型的API。
里面的比较方法
public class NodeComparator<T> implements Comparator<T>{
}public int compare(T o1, T o2) {
// if(T.class instanceof Node.class)
// return ((String)o1).compareTo((String)o2);
//
return ((String)o1).compareTo((String)o2);
}因为是T 所以无法判断运类型.所以不能检查.但是 如果直接 转化为String类型是不安全的 对于一个非我需要的类进行比较