• 图说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之前,需要写成如下形式:

    value.getOrDefault("asas", Value.<String>defaultValue());
    

    注解的进一步扩展

    • jdk1.8扩展了注解的上下文,现在注解几乎可以加到任何地方:局部变量、泛型类、⽗类与接⼝的实现,就连⽅法的异常也能添加注解
    • ElementType.TYPE_USE和ElementType.TYPE_PARAMETER是两个新添加的⽤于描述适当的注解上下⽂的元素类型

  • 相关阅读:
    DOS命令
    vim学习
    Python学习笔记小结之猜数字游戏
    Python学习笔记函数之异常处理
    Python学习笔记函数之global语句
    Python学习笔记函数之局部和全局作用域
    Python学习笔记函数之关键字参数和print()
    Python学习笔记函数之None值
    Python学习笔记函数之返回值和return语句
    Python学习笔记函数之def语句和参数
  • 原文地址:https://www.cnblogs.com/Kidezyq/p/11753522.html
Copyright © 2020-2023  润新知