web-dev-qa-db-ja.com

コンストラクターDate(...)は非推奨です。どういう意味ですか? (Java)

私はこのようなDateを作成しようとしています:

_date = new Date(year-1900, mon-1, day, hrs, min, sec);
_

eclipseから次の警告が出されます:「コンストラクターDate(int, int, int, int, int)は非推奨です」。

コンストラクタが非推奨になるとはどういう意味ですか、どうすればよいですか?

43
snakile

非推奨とは、文字通りの不承認を意味しますが、より正確な翻訳はretiredです。 非推奨とは、このメソッドが引き続き使用可能であることを意味しますが、使用しないでください。徐々に段階的に廃止されます。同じことを行う新しいメソッドがあります。非推奨のメソッドには、特別なJavadocコメントが付いています。

_/**
 *@deprecated Please now use newMethod()
 *@see newMethod()
 */
_

使用

  • Calendar.set(year + 1900, month, date, hrs, min)

または

  • GregorianCalendar(year + 1900, month, date, hrs, min)

提案どおり APIドキュメントによる

42
JuanZe

つまり、新しいコードで使用しないでください。これは通常、何かを達成するためのより良い方法がある場合に当てはまりますが、下位互換性のために古い方法が維持されます。

代わりに、couldCalendar AP​​Iを使用できます。完全なメッセージがあなたに示唆するように-または(より良いIMO)を使用できます- Joda Time またはJava 8の_Java.time_パッケージ( tutorial を参照)。両方ともfar優れた日付/時刻API。

非推奨のAPIに関しては、コンパイラメッセージが代替案を提案しない場合、常にJavadocを見る価値があります-この場合は、 Calendar.set(...)

17
Jon Skeet

つまり、通常は危険であるため、またはより優れた代替手段が存在するため、新しいコードで使用しないでください。コンパイラは、非推奨のコード要素で非推奨のプログラム要素が使用またはオーバーライドされると警告を発します。

あなたの場合、 Java.util.Calendar の代わりに Java.util.Date クラスを使用できます。

ところで、Java 8以降では、これらの古いクラスは新しい Java.timeパッケージ (- チュートリアル )に取って代わられます。 Joda-Time で定義され、 JSR 31 で定義され、 ThreeTen Extra プロジェクトで拡張されます。古いクラスはそのまま残り、引き続きそれらを使用します(非推奨の部分は避けます)が、新しいクラスに移行することをお勧めします。

5
missingfaktor

非推奨とは、それが何かを行うためのレガシーまたは古い方法であり、避けるべきであることを意味します。

このドキュメントによると http://Java.Sun.com/j2se/1.4.2/docs/api/Java/util/Date.htmlCalendar.set(...)を使用します。

4
Daniel A. White

コードの移行に役立つコードスニペットを次に示します。両方のプリントは同じです。

import Java.util.Calendar;
import Java.util.Date;

public class Tinker {

    public static void main(String[] args) {

        int Y = 2015; // Year 2015
        int M = 11;   // 0..11 -- December
        int D = 15;   // 15th
        int H = 16;   // 4:00 PM
        int MN = 28;  // 4:28 PM
        int S = 41;   // 4:28:41

        Date d = new Date(Y-1900,M,D,H,MN,S);

        System.out.println(d);

        Calendar c = Calendar.getInstance();
        c.set(Y, M, D, H, MN, S);

        d = c.getTime();
        System.out.println(d);                      

    }

}

出力:

Tue Dec 15 16:28:41 CST 2015
Tue Dec 15 16:28:41 CST 2015
3
ChrisCantrell

非推奨であるため、実際には使用しないでください。代わりに、カレンダーを使用してフィールドから日付を生成できます。

2
Paul McKenzie

deprecatedは、このコンストラクターの使用が推奨されていないことを意味し、Javaの将来のリリースで削除される可能性があります。 Calendar APIを使用します。

1
EJB

非推奨とは、一般的に、この関数を使用しないことを意味します。

何らかの理由で、Javaはそれなしでより良いと判断されました(より良い代替手段が存在し、代わりにそれを使用する必要があるため)、そしてmight Javaの将来のバージョンから削除されます。非推奨は基本的には「これは将来削除される可能性がありますが、最初にコードから削除する機会を与えるために少し長く保持していますが、 」

0
jalf

非推奨の手段コアAPIと他のJavaライブラリはそれに依存せず、より良い方法があると言っています。

0
Premraj