import java.util.*;public class stack1{
public static void main(String[]args){
Stack<Double> sc=new Stack <Double>();
  double a=10;
  double b=20;
  sc.push(a);
  }
}
我的JDK版本是1.42的,为什么我把栈定义成Double类型时(或其它类型),用上面的方法不行?括号之类的该怎么加?

解决方案 »

  1.   

    1.4是这么用的:
    Stack sc=new Stack();
    double a=10;     //注意跟下行的区别double and Double
    Double b=new Double(20);
    sc.push(new Double(a));
    sc.push(b);
    System.out.println(sc.pop());
    System.out.println(sc.pop());我猜想1.4的栈不支持直接push/pop基本类型,所以要转化成类,如Double,Integer等等
    1.5应该就是加了一层封装,支持直接push/pop基本类型,但要像你上面那样加<Double> 
    相当于我上面代码new Double(a)这一步给封装好了.
      

  2.   

    又试了下:
    即使在1.5中,也是不可以这么做的
    Stack<Integer> sc=new Stack <Integer>();
    double a=10;
    sc.push(a);大概是因为没有从double到Integer的构造器吧
    间接辅证了我上面的推论走人了
    其它的明天再说了
      

  3.   

    楼主的用法是范型,JDK1.5才支持的
      

  4.   

    1.5里才有范型的,也提供了autoboxing,但是你这里是从double转成integer,需要显示的写明
      

  5.   

    晕倒了..sun公司网站上的那个jdk1.5.09 javac 怎么是中文的 看了有点不习惯.