若请求是在同一天发出的,则Object保持不变,否则进行比较并创建新Object



今天,如果我第一次运行程序,那么创建对象,否则我们使用上一个对象。

public class ObjectRestriction {
static SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
static String date = "00000000";
public static void main(String[] args) {
if( date.equals(formatter.format(new Date())))
{
System.out.println("already create object");
}
else
{
Reconcilation rc = new Reconcilation();
date = formatter.format(new Date());
System.out.println(date);
}
} 
}

但当我再次运行时,它会将日期变量初始化为"00000000"并创建新对象。因此,请帮助限制基于日期的对象创建。

static变量无法在应用程序运行期间存活。任何其他类型的变量也不存在。在你的main方法完成运行,并且你没有派生任何其他线程之后,你的应用程序就完成了。你所有的变量都消失了,消失了,不再存在,从记忆中清除了。

持久性存储

若要在应用程序的两次运行之间保存一个值,必须保持该值,然后将数据写入存储器。例如,在文件中,或发送到数据库。

java.time

您使用的是麻烦的旧日期时间类,现在是遗留类,被java.time类所取代。对于不带时间和时区的仅限日期的值,请使用LocalDate类。

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

ISO 8601

ISO 8601标准为表示日期-时间值的文本定义了合理实用的格式。将日期时间对象写入文本文件时,请使用这些格式。

对于仅限日期的值,其格式为YYYY-MM-DD。默认情况下,java.time类使用这些标准格式。所以您只需调用toString

String output = today.toString();
LocalDate ld = LocalDate.parse( "2017-01-23" );

最新更新