我设置了一个stringTokenizer,我希望将其副本用于另一个进程。有办法做到这一点吗? 我的代码:
StringTokenizer itr = new StringTokenizer(theBigString);
itr.nextToken();
// My goal is to get a new StringTokenizer after the first token
//StringTokenizer itrCopy = new StringTokenizer(itr.toString());
有没有办法完成这项工作?
答案 0 :(得分:2)
这可能无法准确回答您的问题,但引用StringTokenizer docs,
StringTokenizer是为保持兼容性而保留的旧类 原因虽然在新代码中不鼓励使用它。建议 任何寻求此功能的人都使用String的split方法 或者改为java.util.regex包。
不幸的是,这并没有提到为什么它不鼓励。原因是,您必须将整个字符串加载到内存中才能使用StringTokenizer
,这意味着您不会受到非常严重的内存限制,那么为什么不使用split
?今天使用StringTokenizer
的唯一原因就是当您将returnDelims
设置为true
时(如果不同的分隔符对您来说意味着不同的事情),因为您无法使用{split
1}}。
如果您仍有某些理由使用StringTokenizer
,那么您在此处遇到严重问题。 StringTokenizer
不是Serializable
,您无法继承Serializable
,因为它没有虚构造函数。这意味着您唯一的方法是使用反射,可能使用某些第三方序列化库,可能将其序列化为XML / JSON。但缺少默认构造函数也可能限制您的选择。反序列化时,您必须首先使用一些虚拟字符串构造标记化器,然后通过反射设置其字段。