Re: about the Object reference
You can check if an object is of a certain type using 'instanceof'.
if (o instanceof String) {
String s = (String) o;
}
however it would be better if you designed the Stack with generics.
/**
* A stack
* @param <T> the generic type
*/
public interface Stack<T> {
/**
* Push an object onto the stack
* @param t the object
*/
void push(T t);
/**
* @return pop an object from the stack
*/
T pop();
}
A simple implementation used a linked list:
import java.util.LinkedList;
/**
* Implementation of Stack
*/
public class StackImpl<T> implements Stack<T> {
private LinkedList<T> list = new LinkedList<T>();
/**
* {@inheritDoc}
*/
public T pop() {
return list.removeLast();
}
/**
* {@inheritDoc}
*/
public void push(T t) {
list.addLast(t);
}
}
Example usage:
public class StackTest {
public static void main(String[] args) {
Stack<String> stack = new StackImpl<String>();
stack.push("hi");
stack.push("joe");
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
Cheers,
Martin.
"jtl.zheng" <jtl.zheng@gmail.com> wrote in message
news:1154058673.852190.310270@h48g2000cwc.googlegroups.com...
I have write a stack which have interfaces:
------- public void push(Object o);
------- public Object pop();
then I can push any type class object into the stack
and when I pop() one element I can use:
------- Object o=pop();
------- o.getClass();
to determine this element o belong to what class
(eg. if it's String it return "class java.lang.String")
my question is when I know this o is a String Object
how can I use its String interface
something like:
------- Object o=pop();
------- String s=o; // can't compiled here
// java.lang.Object, required:
java.lang.String
------- System.out.println(s.charAt(n)); // use the String
interface
I know this o is point to a String object
how can I use this o's String interface (to get something like
o.charAt(n)) ?
Thank you very much in advance