zoukankan      html  css  js  c++  java
  • 图说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是两个新添加的⽤于描述适当的注解上下⽂的元素类型

  • 相关阅读:
    Flipboard web移动端-打造每秒60帧的流畅体验
    android开源代码演示项目CodeBox
    Material风格的文件管理器
    android:ToolBar详解
    GossipView:圆圈布局的自定义view
    9个完整android开源app项目
    android-波浪效果ripple-background
    Android Studio 简单介绍和使用问题小结
    ActionItemBadge:在actionbar上显示badge数字提示
    在ContentResolver中使用Group By
  • 原文地址:https://www.cnblogs.com/Kidezyq/p/11753522.html
Copyright © 2011-2022 走看看