Javaにおけるカスタム注釈類と使用例の解析
この文章は主にJavaの中でユーザー定義の注釈類を紹介して、そして過程の解析を使って、本文の中で実例のコードの紹介の非常の詳しいことを通して、みんなの学習あるいは仕事に対して一定の参考の学習価値を持って、必要な友達は以下を参考にすることができます。
Javaフレームには、注釈がよく使われています。また、多くのことを省き、カスタマイズされた注釈を知ることができます。
注釈はJavaコードに追加できるメタデータで、クラス、方法、変数、パラメータ、カバンはすべて注釈で修飾できます。注は、修飾されたコードに直接影響を与えません。
まず自分の注釈を書きます。
はい、私達のカスタムコメントはもう完成しました。(はい、カスタムコメントは上のコードについて)どうやって使うかを見に来ました。簡単ですね。他の注釈と同じように、私たちが使うところに書いてください。はい、冗談ではないと思います。
はい、これでPersonにカスタム注釈を通してname属性を注入しましたが、実際の運用ではこんなに複雑なことはあり得ません。入門しただけです。この「アナログのコンパイル類」をツール類に組み立てて、実際に運用します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
Javaフレームには、注釈がよく使われています。また、多くのことを省き、カスタマイズされた注釈を知ることができます。
注釈はJavaコードに追加できるメタデータで、クラス、方法、変数、パラメータ、カバンはすべて注釈で修飾できます。注は、修飾されたコードに直接影響を与えません。
まず自分の注釈を書きます。
@Documented // javadoc
@Retention(RetentionPolicy.RUNTIME) // , : 、
@Target({ElementType.METHOD}) // , 、
public @interface MyValue {
String value();
// , , hello
//String value() default "hello";
}
上で使う二つの種類を解析します。
public enum RetentionPolicy {
SOURCE,
CLASS,
RUNTIME
}
public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
FIELD,
METHOD,
PARAMETER,
CONSTRUCTOR,
LOCAL_VARIABLE,
ANNOTATION_TYPE,
PACKAGE
}
二つのエニュメレート・カテゴリー、つまり私達がカスタマイズした注釈は一定の時間と空間作用領域があると見られます。はい、私達のカスタムコメントはもう完成しました。(はい、カスタムコメントは上のコードについて)どうやって使うかを見に来ました。簡単ですね。他の注釈と同じように、私たちが使うところに書いてください。はい、冗談ではないと思います。
public class Person {
@MyValue(value=" ")
private String name;
/*
setter getter,
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
そして他のところで取りに行きます。
Person person = new Person();
System.out.println(person.getName());//null
// , , ?
Springのようなフレームは反射によって実現されることはよく知られています。私たちは「コンパイルクラス」をシミュレートします。属性上の注解ですので、まず反射でクラスのすべての属性を取得します。
public static void main(String[] args) throws NoSuchFieldException {
Person person = new Person();
// , Person.class , , , ,
Field field = Person.class.getDeclaredField("name");
MyValue annotation = field.getAnnotation(MyValue.class);//
String name = annotation.value();// value() MyValue
// , setter
person.setName(name);
System.out.println(" person name :" + person.getName());
}
はい、これでPersonにカスタム注釈を通してname属性を注入しましたが、実際の運用ではこんなに複雑なことはあり得ません。入門しただけです。この「アナログのコンパイル類」をツール類に組み立てて、実際に運用します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。