jdk 1.5 中, class Foo<T> {} 中的T是表示什么呢?
RT 问题点数:20、回复次数:9Top
1 楼lxleaves(飘泊的叶子)回复于 2005-06-04 16:51:16 得分 5
范型,使用这个类时编译器会提示你使用类似于 T<Object> t = new T<Object>();的方式Top
2 楼laughsmile(海边的星空)回复于 2005-06-04 17:18:04 得分 5
jdk1.5引用了C++的泛型,T可以是任意类型.Top
3 楼cat_871017(零下九度)回复于 2005-06-04 19:27:58 得分 3
泛型是5。0刚加的,可以是任意一种类型,Top
4 楼wangyaqin123(雅勤)回复于 2005-06-04 19:34:02 得分 2
是范型,可以看2004年程序员合集中的相关文章Top
5 楼maoxianwang(傻蛋)回复于 2005-06-05 01:24:41 得分 0
好爽嘿嘿Top
6 楼jzg1234(雨中夕阳)回复于 2005-06-05 01:31:30 得分 0
能不能给个例子啊 ?????Top
7 楼ji_jian24(一半是火焰,一半是海水)回复于 2005-06-05 16:56:06 得分 0
我知道是泛型,只是想知道这个字母 T 是不是可以换成其他字母?Top
8 楼sjg1981(★星の金币)回复于 2005-06-05 17:12:12 得分 5
是在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。
Top
9 楼Preamble(Rubbish)回复于 2005-06-06 14:16:32 得分 0
不好用.不知道是我的实现有问题否?
比如说 写一个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类型是不安全的 对于一个非我需要的类进行比较
Top
相关问题
- 安装jdk后,运行.class出错?
- jdk
- 菜鸟问题:怎样正确设置jdk路径及class路径?
- 我用JBUILDER生成的*.class文件怎么在JDK环境下运行?
- class class
- foo foo foo foo foo foo foo大家知道这是什么意思吗?最本溯源,词源探索,和和
- 我的.class文件只有拷贝到 jdk\bin\目录下才能正确执行
- 请问如何将servlet的.java文件编译成.class文件,我用了jdk的javac命令不好使阿???
- 简单问题-如何让jdk编译后将*.class文件存放在指定文件夹
- 用jdk编译Java能不能让编译生成的.class文件自动保存到一个文件夹下?




