克隆stringTokenizer java的值

时间:2016-10-18 01:37:54

标签: java string stringtokenizer

我设置了一个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());

有没有办法完成这项工作?

1 个答案:

答案 0 :(得分:2)

这可能无法准确回答您的问题,但引用StringTokenizer docs

  

StringTokenizer是为保持兼容性而保留的旧类   原因虽然在新代码中不鼓励使用它。建议   任何寻求此功能的人都使用String的split方法   或者改为java.util.regex包。

不幸的是,这并没有提到为什么它不鼓励。原因是,您必须将整个字符串加载到内存中才能使用StringTokenizer,这意味着您不会受到非常严重的内存限制,那么为什么不使用split?今天使用StringTokenizer的唯一原因就是当您将returnDelims设置为true时(如果不同的分隔符对您来说意味着不同的事情),因为您无法使用{split 1}}。

如果您仍有某些理由使用StringTokenizer,那么您在此处遇到严重问题。 StringTokenizer不是Serializable,您无法继承Serializable,因为它没有虚构造函数。这意味着您唯一的方法是使用反射,可能使用某些第三方序列化库,可能将其序列化为XML / JSON。但缺少默认构造函数也可能限制您的选择。反序列化时,您必须首先使用一些虚拟字符串构造标记化器,然后通过反射设置其字段。