Java—从Java.lang.Object到自定义类实例的类型转换
是否有一种方法可以将Java.lang.Object类型转换为自定义类的实例 本质上,我创建了一个堆栈(java.util.Stack),并将my_类类型的实例推入其中。但是当我从堆栈中弹出时,我收到一个Java.lang.Object类型的实例 我是否必须在我的_类中创建一个构造函数,该构造函数可以从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很陌生,并且没有实现泛型(与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]);
}