Java 標準アノテーションのサンプル

Javaの標準アノテーションのサンプルです。
JavaSEに標準で用意されています。java.langパッケージにあります。

目次

@Override

メソッドをオーバーライドする必要があることを示す注釈です。
オーバーライドされていない場合はコンパイルエラーになります。
Java クラスの継承のサンプル

コード

8行目のクラスは、3行目のクラスを継承しています。
9行目は、@Overrideアノテーションです。親クラスにあるprintメソッドがオーバーライドされていない場合、コンパイルエラーになります。

package test1;

class Test {
    void print() {
        System.out.println("");
    }
}
class Sample1 extends Test {
    @Override
    void print() {
        System.out.println("1");
    }
}
public class Test1 {
    public static void main(String[] args) {

        Sample1 s1 = new Sample1();
        s1.print(); //1
    }
}

 

@Deprecated

非推奨であるという注釈です。

コード

4行目は、@Deprecatedアノテーションです。
5行目のメソッドが非推奨であることを示しています。

package test1;

class Sample1 {
    @Deprecated
    void print() {
        System.out.println("1");
    }
}
public class Test1 {

    public static void main(String[] args) {

        Sample1 s1 = new Sample1();
        s1.print(); //1
    }
}

 

@SuppressWarnings

コンパイル時の警告を表示しないようにします。

コード

4行目は、@SuppressWarningsアノテーションで、引数はunusedです。
6行目の変数は未使用で本来なら警告がでますが、@SuppressWarningsアノテーションでその警告をださないようにしています。

package test1;

class Sample1 {
	@SuppressWarnings("unused")
	void print() {
		int i;
		System.out.println("1");
	}
}
public class Test1 {
	public static void main(String[] args) {

		Sample1 s1 = new Sample1();
		s1.print(); // 1
	}
}

 

@SafeVarargs

可変長引数でジェネリクスの時に表示される警告を出さないようにします。
Java 可変長引数のメソッドのサンプル

コード

6行目は、@SafeVarargsアノテーションです。
7行目の可変長引数でジェネリクスを使用すると本来なら警告がでますが、@SafeVarargsアノテーションでその警告をださないようにしています。

package test1;
import java.util.ArrayList;
import java.util.List;

class Sample1{
    @SafeVarargs
    static void print1(List<String>... test){
        for (List<String> c : test) {
            System.out.println(c);
        }
    }
}
public class Test1 {
    public static void main(String[] args) {

        List<String> hiragana = new ArrayList<>();
        hiragana.add("あ");
        hiragana.add("い");
        
        List<String> romaji = new ArrayList<>();
        romaji.add("a");
        romaji.add("b");
        
        Sample1.print1(hiragana,romaji); //[あ, い][a, b]
    }
}

 

@FunctionalInterface

インターフェースが関数型インターフェースかチェックします。
メソッドが1つでない場合にエラーになります。

3行目は、@FunctionalInterfaceを記述しています。
6行目は、メソッドを1つのみ記述しているのでエラーになりません。
7行目のコメントを外すとメソッドが2つになりエラーになります。

package test1;

@FunctionalInterface
interface InterfaceA {
	int cnt1 = 3;
	void printA();
	//void printB();
}
class Class1 implements InterfaceA{
	@Override
	public void printA() {
		System.out.println(cnt1);
	}
}
public class Test1 {
	public static void main(String[] args) {
		Class1 c1 = new Class1();
		c1.printA(); // 3
	}
}

関連の記事

Java 独自のアノテーションを作成して値を取得するサンプル
Java ラムダ式のサンプル

△上に戻る