0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

隙間時間にみる早見表〜OracleJavaSE11 gold | マーカーインタフェース 〜

Posted at

マーカーインタフェース

そのクラスを処理するべきかインタフェースで判断する。インタフェースは何も持たない
instansof演算子を使用しマーカーインタフェースを使用しているクラスか判定する手法

プロセッサ

マーカーインタフェースを使用するクラスを処理するクラスのこと

アノテーション

マーカーインタフェースを簡単に表現するためのもの
ある処理の対象になるものを示す

特徴

プロセッサに値を渡すことができる
フィールド、メソッド、コンストラクタの細かい単位で指定できる

独自定義方法

public @interface test{}

コンパイル後、java.lang.annotation.Annotationインタフェースを継承する記述になる

使用方法

@test
public class Item{}

コンパイルされるとインタフェースが定義されるわけではなく、アノテーションを持っているという情報が保存される

注釈パラメーター

@ interface内に設定するメソッドに付与する値のこと

@アノテーション名(注釈パラメーター=...)
public @interface test{
String name();
int prise();
}
@test(name = "test",prise = 100)
public class Item{
String name;
int prise;
}

メソッド名をString型のvalueのみにすると@アノテーション名(値)で記述可能

デフォルト値の設定

public @interface test{
String name() default "default";
}

@DefaultValues
public class Item{
}

メタ・アノテーション

リフレクション

インスタンスが持っているメソッドやフィールドの種類を調べて、インスタンスを操作できる

java.lang.reflect

setAccessible()
フィールドのアクセス情報(アクセス修飾子のアクセス可不可の真偽値)を変更する

java.lang.class

Class<T> 変数名 = クラスリテラル

クラスがどのように定義しているかの情報を扱う

getAnnotation(アノテーションクラス)
クラスが持つアノテーション情報の取得
getDeclareFileds()
フィールドの定義情報を取得する

クラスリテラル

クラス名.classで表せる情報

RetentionPolicy
@ Retentionを下記の三つから選び@ interfaceクラスの上に使用する
アノテーションの保持期間、デフォルトでCLASSが設定される
破棄順
早 SOURCE⇒CLASS⇒RUNTIME 遅

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
説明
RUNTIME 実行時まで保持する、実行時に何らかの処理をするプロセッサを作る時によく使われる
CLASS 実行時に破棄する
SOURCE コンパイル時に破棄する

@ Target

そのアノテーションが何を対象としているか

@Target(ElementType.METHOD)
public @interface MyAnnotation {
}
説明
ANNOTATION アノテーション宣言
CONSTRUCTOR コンストラクタ宣言
FIELD フィールド宣言
LOCAL_VARIABLE ローカル変数宣言
METHOD メソッド宣言
MODULE モジュール宣言
PACKAGE パッケージ宣言
PARAMETER メソッドの引数宣言
TYPE クラス、インタフェース、Enum宣言
TYPE_PARAMETER 型パラメータ宣言
TYPE_USE 型の使用

@ Deprecated

バージョン変更などによって使用できなくなる可能性があるものに付与する、非推奨であることを明示しコンパイラに警告を出させる

forRemoval = true
強く抑制する

@ SuppressWarnings

コンパイラの警告抑制
unchecked
警告抑制
deprecation
@Deprecatedの警告抑制
removal
@Deprecatedの強く抑制された警告を抑制

@ Functionalinterface

関数型インタフェースであることを示す

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0