Annotation宣言1
18409 ワード
Annotation名
基本構成:
@Entity
@:Annotationと命名Entity:このアニメーションの名前
Annotation要素(Element)
JAva宣言には、属性またはパラメータの程度と見なす値を設定できる要素がいくつかあります.
@Entity(tableName = "vehicles")
はtableNameという要素を表し、値はvehicleです.要素が1つしかない場合は、
@tableName("vehicles")
に減らすことができます.複数の要素がある場合
Entity(tableName = "vehicles", primaryKey = "id")
と表すことができるAnnotation宣言位置(Placement)
ノイズは、クラス、インタフェース、メソッド、メソッドパラメータ、フィールド、領域変数の上に配置できます.
クラスの上に宣言します.
@Entity
public class Vehicle {
}
使用例@Entity
public class Vehicle {
@Persistent
protected String vehicleName = null;
@Getter
public String getVehicleName() {
return this.vehicleName;
}
public void setVehicleName(@Optional vehicleName) {
this.vehicleName = vehicleName;
}
public List addVehicleNameToList(List names) {
@Optional
List localNames = names;
if(localNames == null)
localNames = new ArrayList();
localNames.add(getVehicleName());
return localNames;
}
}
JAvaデフォルトで提供されるプレゼンテーション
@Deprecated
これは、プレゼンテーションを含む対応するクラス/メソッドなどを使用しないで、サポートされていない、悪い、またはより良い方法があることを意味します.
この宣言付きオブジェクトを使用している場合、Javaコンパイラは警告を出力します.
@Override
スーパークラスにはちょっとひどいとはっきり言っています.したがって、メソッドがスーパークラスと一致しない場合、出力エラー
例
public class MySuperClass {
public void doTheThing() {
System.out.println("Do the thing");
}
}
public class MySubClass extends MySuperClass{
@Override
public void doTheThing() {
System.out.println("Do it differently");
}
}
@Overrideを使用するのは強みではありませんが、使用を指します.スーパークラスが変更されると、コンパイラはメソッドの上書きを行っているかどうかを通知します.そのため、変更点を簡単にチェックできます.
@SuppressWarnings
この方法に対してコンパイラsuppress警告(コンパイラ警告の抑制)を生成する.コードから出力される警告メッセージを無視できます.
@SuppressWarnings
public void methodWithWaring(){
}
個人アニメーションの作成
クラスやインタフェースのように独自のファイルに定義された個人用のプレゼンテーションを作成できます.
例
@interface MyAnnotation {
String value();
String name();
int age();
String[] newNames();
}
魏雅婷は4つの要素を持っていて、名前はAnnotationです@interfaceキーワードjavaコンパイラにコードが宣言定義であることを示す
要素はインタフェースのメソッド定義に似ています
使用
@MyAnnotation(
value="123",
name="woonsik",
age=26,
newNames={"woonsik", "byeori"}
)
public class myClass{
}
上記の使用例に示すように、各要素に必要な値を指定して使用できます.要素Default値
@interface MyAnnotation{
String value() default"";
String name();
int age();
String[] newNames();
}
@MyAnnotation(
name="woonsik",
age=26,
newNames={"woonsik","byeori"}
)
public class MyClass{
}
@Retention
SOURCE:宣言情報はコンパイル時に消失し、バイトコードには存在しない ex) @Override, @SuppressWarnings CLASS:クラスファイルに存在し、コンパイラによって使用され、実行時に消失 RUNTIME:運転時、JVMがノイズ情報を参照することができる。Java replicationで使用
例
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "";
}
@Target
既存@ターゲットリスト
ElementType.ANNOTATION_TYPE
ElementType.CONSTRUCTOR
ElementType.FIELD
ElementType.LOCAL_VARIABLE
ElementType.METHOD
ElementType.PACKAGE
ElementType.PARAMETER
ElementType.TYPE
Java 8から追加された@TargetElementType.TYPE_PARAMETER
ElementType.TYPE_USE;
TYPEとは?使用
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
@Target(ElementType.TYPE_PARAMETER)
public @interface MyAnnotation {
String value() default "";
}
@Inherited
@Inherited Anotationを使用するスーパークラスを継承するサブクラスにも対応するAnotationが必要です
java.lang.annotation.Inherited
@Inherited
public @interface MyAnnotation {
}
@MyAnnotation
public class MySuperClass{
}
public calss MySubClass extends MySuperClass {
}
여기서 MySubClass클래스는 @MyAnnotation을 상속받는다
@Documented
@Documented宣言指定したターゲットのJavaDocにこの宣言の存在をマークする
java.lang.annotation.Documented
@Documented
public @interface MyAnnotation {
}
@MyAnnotation
public class MySubClass{
}
MySubClass클래스는 JavaDoc에서 @Documented를 표시하게 된다
Reference
この問題について(Annotation宣言1), 我々は、より多くの情報をここで見つけました https://velog.io/@dnstlr2933/Annotation-애노테이션1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol