8

@Deprecated注釈付きのクラスがすべてのメソッドとフィールドが自動的に非推奨になることを意味するかどうかは誰にもわかりません..?

JLS 9.6.3.6から。@非推奨

少なくとも、Eclipse は非Deprecated推奨クラスのメソッドを表示していません。

4

3 に答える 3

6

いいえ。

@Deprecated
class Old {
     public void foo () {}
}

そのクラスをいつ参照するか:

新着().foo()

それだけ

非推奨としてマークされます。

于 2013-07-12T12:37:29.893 に答える
4

クラスに次のアノテーションを付けたVOとし@Deprecatedます。

@Deprecated
class VO {
  private String name ;
  public void setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
}

それで :

VOv = 新しい VO(); //ここで警告

v.getName(); // no warning

クラスが非推奨であることを意味します。したがって、そのタイプを使用すると警告が表示されます。

于 2013-07-12T12:39:28.143 に答える
2

さて、仕様には次のように書かれています。

Java コンパイラは、宣言に @Deprecated アノテーションが付けられた型 [..] が使用された場合 (つまり、オーバーライド、呼び出し、または名前で参照された場合)、[..] 非推奨警告を生成する必要があります。

したがって、厳密に言えば、型が非推奨のオブジェクトでメソッドを呼び出しても、警告を生成する必要はありません (「オーバーライド」および「呼び出し」は、メソッドまたはコンストラクターのみを参照でき、クラスは名前で参照されないため)。ただし、そのオブジェクトを宣言すると、警告が表示される必要があります。

ただし、コンパイラがこれ以上警告を出すことを許可されていないということは何もありません。そして私の意見では、非推奨クラスのすべてのメソッドは非推奨と見なされるべきであると想定するのが合理的です。

于 2013-07-12T12:37:31.397 に答える