新日期(年、月、日)已弃用

new Date(year,month,day) is deprecated

我有一个 class A_Class 它的构造函数参数之一是 Date 类型,当我尝试在我的 main 中初始化 class 的对象时例如:

A_Class aClass = new A_Class( param1, param2, new Date(1995,01,04) );

IDE 告诉我 Date 这种格式已被弃用。

难道没有另一种方法可以直接将新日期传递给构造函数,还是我总是必须这样做:

final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
String dateInString1 = "1995-Jan-4";
Date dateInDate1 = formatter.parse(dateInString1);
A_Class aClass = new A_Class( param1, param2, dateInDate1 );

错误class

您使用的是糟糕的日期时间 class,现在已成为遗留问题。几年前被现代 java.time classes 所取代。

LocalDate

对于没有时间和时区的仅日期值,使用 LocalDate

LocalDate localDate = LocalDate.of( 1995 , 1 , 5 ) ;

以标准 ISO 8601 格式 YYYY-MM-DD 生成文本。

String output = localDate.toString() ;

设计您的 class 以容纳 LocalDate 而不是 Date

public class Employee 
{
    private String givenName, surName ;
    LocalDate whenHired ;

    // Constructor
    public Employee( String givenName , String surName , LocalDate whenHired ) 
    {
        …
    }

}

用法示例。

Employee alice = new Employee( "Alice" , "Anderson" , LocalDate.of( 1995 , Month.JANUARY , 4 ) ) ;

八进制文字

new Date(1995,01,04)

除非您指的是八进制(以 8 为底)而不是十进制(以 10 为底),否则不要以零开头的文字整数。