0

我将每天处理数百万次的日期。我创建了一个 XMLGregorianCalendar 来处理来自 XML 提要的日期,如下所示:

XMLGregorianCalendar xCalEst = null;
xCalEst = DatatypeFactory.newInstance().newXMLGregorianCalendar("2011-08-09T21:50:00Z");

日期字符串将来自另一个来源。由于我需要经常这样做,我在想,出于性能原因,我应该将日历创建为静态的并且只创建一次。问题是没有(简单的)方法可以使用新的传入日期字符串重置日历。

IE:我想做的是:xCalEst.reset("2011-08-09T21:55:00Z");

我是否过于关注性能,只是让对象每次都被创建和销毁,还是有一种简单的方法来做到这一点?

请注意,我是一名老 C 程序员,刚开始接触 Java。

4

1 回答 1

0

我从未尝试过,但是可以使用setTime和之setTimeZone类的方法。这种方法只有在您按顺序发送消息时才有效,例如在一个线程中。由于 Java(与 C 不同)是一种面向对象的语言,因此它的自然行为是创建和处理对象。您应该首先证明XMLGregorianCalendar's 的顺序创建是性能/内存瓶颈,然后尝试优化。一般来说,不要低估垃圾收集的力量 :-)

鉴于您的示例,您应该首先考虑“缓存”DataTypeFactory:

DatatypeFactory dtf = DatatypeFactory.newInstance();
dtf.newXMLGregorianCalendar("2011-08-09T21:50:00Z");
于 2011-08-22T15:01:25.667 回答