Java宣言

16987 ワード

宣言


Java宣言は、JavaコンパイラおよびJVMで使用可能な情報の一部を表すメタデータです.
組み込みコメントとユーザーコメントの2種類があります.

@Override(内蔵)


JAva overridingでよく見られるコメント.
これは、子メソッドが親メソッドを再定義したときに表示されるメソッドです.
class Animal{
    void eat(){
        System.out.println(" 음식을 먹는중");
    }
}

class Dog extends Animal{

    private String name;

    Dog(String name){
       this.name=name;
    }

    @Override
    void eat() {
        System.out.print(name);
        super.eat();
    }
}
public class Main {

    public static void main(String[] args) {


        Dog d=new Dog("강이지");
        d.eat();

    }
}//강아지 음식을 먹는중

@SuppressWarnings(内蔵)


コンパイラからの警告を除外します.
あまりよくない言い方だと思います.
警告を無視する必要があるからですか?このような考えと警告は本当に手がかりのような警告かもしれないので、あまり良い方法ではないようです.

@Depented(内蔵)


次に、このメソッドは使用されなくなり、使用されている場合はコンパイラに警告します.

class A{
    void m(){
        System.out.println("hello m");
    }

    @Deprecated
    void n(){
        System.out.println("hello n");
    }
}

public class Main {
    public static void main(String[] args) {


        A a=new A();

        a.m();
        a.n();


    }
}

ユーザーコメント


ユーザーコメントを使用する場合は、次の点を覚えておいてください.

  • メソッドにthrowセクションを含めることはできません

  • メソッドにはパラメータを含めるべきではありません.

  • メソッドは、データ型、文字列、クラス、列挙タイプなどのデータ型の配列の1つを返さなければなりません.
  • @インタフェース(ユーザー)

  • タグ注釈
  • @interface MyAnnotaion{
    }
    
  • 単一値注釈
  • @interface MyAnnotaion{
    
        int value();
    }
    
  • 多値注記
  • @interface MyAnnotaion{
    
        int value();
        String value2();
        String value3();
    
    }

    @Target(ユーザー)


    @Targetタグは、コメントの使用タイプを指定します.
  • クラス使用
  • @Target(ElementType.TYPE)
    @interface MyAnno{
        int value();
        String value2();
    }
  • クラス、メソッド、フィールド
  • に使用
    @Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD})
    @interface MyAnno{
        int value();
        String value2();
    }

    @予約(ユーザ)


    次に、ライフサイクル->ライフサイクルが生き残る時間について説明します.

    保存ポリシー有効性保存ポリシー.SOURCEソースファイルにのみ存在する->コンパイル後に宣言は消えます.RetentionPolicy.CLASSクラスはファイルにのみ存在します->実行時にクラスをメモリに読み込むと、この情報は保存ポリシーから削除されます.RUNTIMEクラスファイルに存在し、実行時に使用可能->コンパイラ、JVMですべて動作
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    @interface MyAnnotation{
        int value();
        String name();
    }
    
    
    //주석 적용
    class Hello{
    
        @MyAnnotation(value = 20,name="hwan")
        public void sayHello(){
            System.out.println("안녕");
        }
    }
    
    public class Main {
        public static void main(String[] args) throws Exception {
    
    
            Hello h=new Hello();
    
            Method method=h.getClass().getMethod("sayHello");
    
            MyAnnotation m=method.getAnnotation(MyAnnotation.class);
    
            System.out.println("값:"+m.value());
            System.out.println("이름:"+m.name());
            
    
    
        }
    }//값:20 이름:hwan