15

重複の可能性:
アノテーションは Java でどのように、どこで使用されますか?
Java Bean、アノテーション: 彼らは何をしますか? 彼らはどのように私を助けてくれますか?

Java 5 のアノテーションが言語の「高度な機能」であるという記事を何度も読みました。最近まで、私は (通常の @Override や &c を除いて) アノテーションをあまり使用していませんでしたが、多くの Web サービス関連のプロジェクトに取り組んでいるため、手を使わざるを得なくなりました。私は Java 5 より前のことを学んで以来、座ってアノテーション システムを理解するのに時間をかけたことはありませんでした。

私の質問-皆さんは実際に注釈を使用していますか? それらはあなたにとって日常的にどの程度役に立っていますか? カスタム アノテーションを作成する必要があった StackOverflow 担当者は何人ですか?

4

9 に答える 9

6

おそらく、Java アノテーションの最も有用で使用されるケースは、xml 構成ファイルの代わりに POJO + アノテーションを使用することです。

(すでに述べたように) Web フレームワーク (Spring や Seam など) を使用する場合、通常は役立つ注釈がたくさんあるので、私はそれをよく使用します。

私は最近、カスタムステートマシン、検証の目的、および注釈の注釈を構築するためのいくつかの注釈を作成しました (そのメタデータの側面を使用して)。そしてIMOは、コードをよりクリーンにし、理解しやすく、管理しやすくするのに大いに役立ちます.

于 2010-03-01T18:20:25.597 に答える
3

現在のプロジェクト (200KLOC)、私が常に使用する注釈は次のとおりです。

@NotNull / @Nullabe
@Override
@Test
@Ignore
@ThreadSafe
@Immutable

しかし、私はまだ自分の注釈を書いていません... まだ!

于 2010-03-01T18:35:54.593 に答える
1

注釈はフレームワーク専用であり、hibernate/jpa でうまく機能します。オブジェクトに渡される追加情報を必要とするフレームワークを作成するまでは、独自の注釈を作成することはありません。

ただし、テストで独自の注釈を記述できる新しいクールな junit 機能があります - http://blog.mycila.com/2009/11/writing-your-own-junit-extensions-using.html

于 2010-03-01T18:49:11.947 に答える
0

Webアプリの一部としてレポートビルダーがあります。ユーザーは、同じテーマのセット(グラフ、表など)のすべての小さなバリエーションである多数のウィジェットを追加できます。

UIは、ウィジェットクラスのカスタムアノテーションに基づいて構築されます。(たとえば、注釈には、ドロップダウンとして表示されるデフォルト値と有効な値が含まれている場合があります。または、フィールドが必須かどうかを示すフラグが含まれている場合があります)。

これは、開発者がUIに触れることなくウィジェットをクランクアウトできるようにするための良い方法であることが判明しました。

于 2010-03-01T20:24:52.473 に答える
0

状態同期システムで、注釈付きクラスの特殊化であるクラスと、それらを使用する必要のある環境を説明するために注釈を使用します(オブジェクトが作成されると、オブジェクトは、最適なエンティティクラスであるエンティティリストに対して機能します。ネットワーク上のノード用に作成します。つまり、サーバーノードのPlayerエンティティは代わりにServerPlayerエンティティです)。さらに、クラス内の属性と、それらをマシン間で同期する方法についても説明します。

于 2010-03-01T20:16:39.180 に答える
0

私は毎日注釈を使用していますが、それらは素晴らしいものです。私は jsf と jpa でそれらを使用しており、代替の XML 構成よりも管理と操作がはるかに簡単であることがわかりました。

于 2010-03-01T18:51:18.150 に答える
0

注釈を使用して、POJO を検証する簡単な方法を作成しました。

@NotEmpty
@Pattern(regex = "I")
private String value;

次に、すべての検証を行うHibernate バリデーターを介してこれを実行します。

import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;

public void validate(T validateMe) {
    ClassValidator<T> validator = new ClassValidator<T>((Class<T>) validateMe.getClass());
    InvalidValue[] errors = validator.getInvalidValues(validateMe);
}

よく働く。きれいなコードです。

于 2010-03-01T21:07:55.463 に答える