我有一个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构造函数.这意味着您唯一的方法是使用反射,可能使用某些第三方序列化库,可能将其序列化为XML / JSON.但缺少默认构造函数也可能限制您的选择.反序列化时,您必须首先使用一些虚拟字符串构造标记生成器,然后通过反射设置其字段.