1. 程式人生 > >java8新特性--拓寬註解的應用場景

java8新特性--拓寬註解的應用場景

Java 8拓寬了註解的應用場景。現在,註解幾乎可以使用在任何元素上:區域性變數、介面型別、超類和介面實現類,甚至可以用在函式的異常定義上。下面是一些例子:

package com.javacodegeeks.java8.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Collection;

public class Annotations {
@Retention( RetentionPolicy.RUNTIME )
@Target( { ElementType.TYPE_USE, ElementType.TYPE_PARAMETER } )
public @interface NonEmpty {
}

public static class Holder< @NonEmpty T > extends @NonEmpty Object {
    public void method() throws @NonEmpty Exception {            
    }
}

@SuppressWarnings( "unused" )
public static void main(String[] args) {
    final Holder< String > holder = new @NonEmpty Holder< String >();        
    @NonEmpty Collection< @NonEmpty String > strings = new ArrayList<>();        
}

}

ElementType.TYPE_USER和ElementType.TYPE_PARAMETER是Java 8新增的兩個註解,用於描述註解的使用場景。Java 語言也做了對應的改變,以識別這些新增的註解。