我用Java编写了一个文本编辑器,我想向它添加撤销功能
但是没有UndoManager类,我需要使用像Stack或LinkedList这样的数据结构,但Java中的Stack类使用Object参数,例如:push(Object o),Not Push(String s) 我需要一些提示或链接。 感谢
答案 0 :(得分:7)
假设您使用的是Java 5,Stack是一个通用类。您可以根据它应该保存的对象来实例化它。
然后您可以使用:
Stack<String> stack = new Stack<String>();
String string = "someString";
stack.push(string);
另请注意,在使用Java 1.4或更低版本的情况下,您仍然可以将String对象推入堆栈。只有当你弹出它们时才需要明确地向下转换它们,如下所示:
Stack stack = new Stack();
String string = "someString";
stack.push(string);
String popString = (String) stack.pop(); // pop() returns an Object which needs to be downcasted
答案 1 :(得分:3)
“数据结构”实际上是一种模式,称为Memento。当您需要存储多个状态并且可以选择返回先前状态时,它会很有用。对于状态的有效数据存储取决于您正在执行的文本编辑器类型,如果可以进行某些格式化,那么请查看Flyweight模式。
答案 2 :(得分:1)
嗯...
看起来有点像我的RTFM案例;-)
如果您使用的是Java 1.4.2,那么当您从堆栈中获取对象时,您只需要明确cast这些对象:
Command cmd = (Command) stack.pop(); // same for peek() etc.
如果您使用的是Java 1.5,请使用Generics并且不需要显式转换。
答案 3 :(得分:0)
好的我解决了
我必须推送textArea中的文本而不是键盘上的字符
谢谢你们