stringTokenizer 的克隆值 java

Cloning value of a stringTokenizer java

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

有什么办法可以做到吗?

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

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

不幸的是,这并没有确切说明为什么不鼓励这样做。原因是,无论如何您都必须将整个字符串加载到内存中才能使用 StringTokenizer,这意味着您的内存限制并不严重,那么为什么不使用 split?今天使用 StringTokenizer 的唯一原因几乎是当你将 returnDelims 设置为 true 时(如果不同的分隔符对你意味着不同的东西)因为你不能用 split.

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