Like Share Discussion Bookmark Smile

J.J. Huang   2020-04-06   Java Java 8   瀏覽次數:次   DMCA.com Protection Status

Java 8 | 拓寬註解的應用場景

Java 8拓寬了註解的應用場景。現在,註解幾乎可以使用在任何元素上:局部變量、接口類型、超類和接口實現類,甚至可以用在函數的異常定義上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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_USERElementType.TYPE_PARAMETERJava 8新增的兩個註解,用於描述註解的使用場景。 Java語言也做了對應的改變,以識別這些新增的註解。


註:以上參考了
Java 8 Lambda新語法,簡化程式,增強效能
Java 8 新特性
Java 8的新特性—终极版
现代化 Java - Java8 指南