Java泛型改成非泛型。

[复制链接]
查看11 | 回复2 | 2009-10-26 19:58:29 | 显示全部楼层 |阅读模式
泛型不是说随时都可以用的,该用就用,不要滥用。他是针对使用者来说的,如果你能确定使用者需要的类型就别用泛型了,这样会给编译器白白增加额外负荷。class Pair {
protected T1 first;
protected T2 second;
public Pair() {
first = null;
second = null;
}
public Pair(T1 first, T2 second) {
this.first = first;
this.second = second;
}
public T1 getFirst() {
return first;
}
public T2 getSecond() {
return second;
}
public void setFirst(T1 newValue) {
first = newValue;
}
public void setSecond(T2 newValue) {
second = newValue;
}}public class Product extends Pair {
private static DecimalFormat money = new DecimalFormat("$0.00");
public Product() {
}
public String toProductString() {
return this.getFirst() + " costs " + money.format(this.getSecond());
}
public Product(String n, double p) {
super(n, p);
}
public static void main(String args[]) {
System.out.println(
new Product("金币", 578.2).toProductString());
}}针对你这两个类,Pair类可以写成泛型,他只负责保存两个未知对象,但是你只写了一个泛型,而你实际调用又有两个泛型,所以帮你改成两个泛型了。你可以看到在Pair定义泛型为你Product省去很多代码。至于你说的泛型到非泛型转换,这个说法没什么意思,既然出现泛型就有存在的意义,否者就不要用。你Pair类就相当与一个仓库,既然是仓库就要定义泛型了,如果有泛型就意味着告诉别人你可以装任何东西了,同时说明你对装入的东西类型不负责,人也可以,畜生也行。但是到了真正使用者就必须要明确一个类型给你了,这是他的义务,这就class Product extends Pair体现出来了。而Product类就是一个无泛型的了,他就必须明确String n, double p这两个别的不管了,实际上你用别的类型也没办法创建Product对象了,他就有局限性了。所以泛型能用则用,不需要用那就别用了。 要非泛型你拿你自己的交吧,这年头学校的教育真是盲目!
回复

使用道具 举报

千问 | 2009-10-26 19:58:29 | 显示全部楼层
第一个是泛型,第二个是普通的,至于改么,不需改的吧,一个泛型就可以囊括N个普通型了,有泛型就别用普通的
回复

使用道具 举报

千问 | 2009-10-26 19:58:29 | 显示全部楼层
……都泛型好,怎么用都行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行