有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

堆栈Java类型转换。对象指向自定义类的实例

有没有一种从Java进行类型转换的方法。对象指向自定义定义类的实例

本质上,我创建了一个堆栈(java.util.Stack),并将my_类类型的实例推入其中。但是当我从堆栈中弹出时,我收到一个Java类型的实例。lang.Object

我是否必须在我的_类中创建一个构造函数,该构造函数可以从Java创建我的_类实例。朗,反对吗


泛型是最好的选择。我对java很陌生,并且没有实现泛型(与C++ STL一样),我一直在做很多类型化,比如-

转换为整数:新整数((Java.lang.Object)。toString())。intValue()

我猜那些日子已经过去了:)谢谢你让我的生活变得轻松


共 (6) 个答案

  1. # 1 楼答案

    这是一个严肃的问题吗

    My_class myClassObj=(My_class)obj

    事实上,就像我所知道的任何其他语言一样。 还是我误解了你的问题

    编辑

    当然,您也可以使用通用堆栈。 只需实际阅读问题的标题;)

  2. # 2 楼答案

    可以按如下方式投射对象:

    my_class myObj = (my_class)obj;
    

    但是,如果将堆栈定义为my_class的堆栈,则无需费心进行强制转换:

    Stack<my_class> myStack = new Stack<my_class>();
    
  3. # 3 楼答案

    不,你需要仔细阅读Java Generics

    java.util.Stack<myObject> myStack = new java.util.Stack<myObject>();
    
  4. # 4 楼答案

    关于接受的答复:

    MyObject someObj = ...; Stack myStack = new Stack(); myStack.push(someObj); someObj = (MyObject) myStack.pop();

    如前所述,是的,someObj = (MyObject) myStack.pop();不是最安全的。但是,如果仍然希望强制转换对象,请使用instanceof

    例:

    Object obj = myStack.pop(); MyObject someObj = null; if( obj instanceof MyObject ) someObj = (MyObject) obj;

  5. # 5 楼答案

    您应该使用泛型编写代码。例如,而不是

    MyObject someObj = ...;
    Stack myStack = new Stack();
    myStack.push(someObj);
    someObj = myStack.pop(); // Error!
    

    您可以让堆栈知道以下对象的类型:

    MyObject someObj = ...;
    Stack<MyObject> myStack = new Stack<MyObject>();
    myStack.push(someObj);
    someObj = myStack.pop(); // Now this works!
    

    如果出于任何原因这不可行,您可以强制执行:

    MyObject someObj = ...;
    Stack myStack = new Stack();
    myStack.push(someObj);
    someObj = (MyObject) myStack.pop(); // This works too, but is considered very bad style
    
  6. # 6 楼答案

    qlist=dao.getdistinctquestion();
                System.out.println(qlist);
                List<QuestionMaster> alist = new ArrayList<QuestionMaster>();
                int i=1, c=0;  String sub="";
                for( QuestionMaster qq:qlist){
                    System.out.println("element:"+qq.getSubject());
                    if(i==1){
                        c=1;   // sub = qq.getSubject();
                    }
                    else
                    if (qq.getSubject().equals(sub)==false){
                        QuestionMaster ss = new QuestionMaster();
                        ss.setSubject(sub);
                        ss.setTag(""+c);
                        alist.add(ss);
                        c=1;
                    }
                    else
                        c++;
                    sub=qq.getSubject();
                    i++;
                }
                QuestionMaster ss = new QuestionMaster();
                    ss.setSubject(sub);
                    ss.setTag(""+c);
                    alist.add(ss);
    
    
                qlist=alist;
    

    =========================================================================================================

    for(Object im:list){
                Object[] a=(Object[]) im;
                System.out.println("subject ="+a[0]+"total questions ="+a[1]);
    
            }