Java—从Java.lang.Object到自定义类实例的类型转换

Java—从Java.lang.Object到自定义类实例的类型转换,java,stack,Java,Stack,是否有一种方法可以将Java.lang.Object类型转换为自定义类的实例 本质上,我创建了一个堆栈(java.util.Stack),并将my_类类型的实例推入其中。但是当我从堆栈中弹出时,我收到一个Java.lang.Object类型的实例 我是否必须在我的_类中创建一个构造函数,该构造函数可以从Java.lang.Object创建我的_类实例 泛型是最好的选择。我对java很陌生,并且没有实现泛型(与C++ STL一样),我一直在做很多类型化,比如-< /P> 要转换为整数,请执行以下

是否有一种方法可以将Java.lang.Object类型转换为自定义类的实例

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

我是否必须在我的_类中创建一个构造函数,该构造函数可以从Java.lang.Object创建我的_类实例


泛型是最好的选择。我对java很陌生,并且没有实现泛型(与C++ STL一样),我一直在做很多类型化,比如-< /P> 要转换为整数,请执行以下操作:新建整数((Java.lang.Object).toString()).intValue()


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

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

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!

不,你需要仔细阅读

java.util.Stack myStack=new java.util.Stack();

您可以像这样投射对象:

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

Stack<my_class> myStack = new Stack<my_class>();
Stack myStack=new Stack();

这是一个严肃的问题吗

My_class myClassObj=(My_class)obj

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

编辑

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

关于接受的答复:

MyObject someObj=。。。;
Stack myStack=新堆栈();
myStack.push(someObj);
someObj=(MyObject)myStack.pop();

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

例:

objectobj=myStack.pop();
MyObject someObj=null;
if(MyObject的对象实例)

someObj=(MyObject)obj

我同意泛型,但问题的答案不是否定的。如果您正在编写新代码,那么肯定是否定的。实际上,没有理由在
对象
之间进行转换,这在现代Java中被认为是一种不好的做法。(此外,这实际上不是他的问题——我看到的唯一问号是在答案肯定是“否”的东西后面:)(Object im:list){Object[]a=(Object[])im;System.out.println(“subject=“+a[0]+”total questions=“+a[1])这个答案对任何人有什么帮助?
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;
Stack<my_class> myStack = new Stack<my_class>();
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]);

        }