グラフィックjdk1.8の新機能(3)---注意事項および最適化された型推論
同じタイプのより多くのノートを見ます
jdk1.8 java.lang.Class
新しいメソッドのクラスはgetAnnotationsByType
次のように、方法は、注釈のタイプのリストを取得することができ、特定のコードの例です。
public class AnnotationTest {
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Filters {
Filter[] value();
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Filters.class)
public @interface Filter {
String value();
}
@Filter("filter1")
@Filter("filter2")
public interface Filterable {
}
@Filters({@Filter("filter1"), @Filter("filter2")})
public interface Filterable2 {
}
public static void main(String[] args) {
for (Filter filter : Filterable.class.getAnnotationsByType(Filter.class)) {
System.out.println(filter.value());
}
for (Filters filter : Filterable.class.getAnnotationsByType(Filters.class)) {
System.out.println(filter.value().length);
}
for (Filter filter : Filterable2.class.getAnnotationsByType(Filter.class)) {
System.out.println(filter.value());
}
for (Filters filter : Filterable2.class.getAnnotationsByType(Filters.class)){
System.out.println(filter.value().length);
}
}
}
输出如下:
filter1
filter2
2
filter1
filter2
2
より良い型推論
上記のことがわかるgetOrDefault
jdk1.8前に、以下の形式で記述する場合には、第2のパラメータは、最初のパラメータによって推測することができます。
value.getOrDefault("asas", Value.<String>defaultValue());
注釈のさらなる拡大
- jdk1.8は、コンテキスト注釈を拡張し、注釈は、現在ではほとんどどこにでも追加されます:ローカル変数、ジェネリッククラス、およびクラスが⽗コネクタを実装し、さらに異常な救済にも注釈を追加することができます
- ElementType.TYPE_USEとElementType.TYPE_PARAMETERは2つの新しく追加された使用ファイルは、適切な注釈型垂直要素に記述されています