前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解jdk1.8新特性(3)--- 注解与类型推测优化

图解jdk1.8新特性(3)--- 注解与类型推测优化

作者头像
SecondWorld
发布2019-10-29 21:32:24
4550
发布2019-10-29 21:32:24
举报
文章被收录于专栏:Java开发者杂谈

图解jdk1.8新特性(3)--- 注解与类型推测优化

获取同一类型多个注解

​ jdk1.8的java.lang.Class类新增了方法getAnnotationsByType方法,该方法可以获取某一个类型的注解列表,具体代码示例如下:

代码语言:javascript
复制
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之前,需要写成如下形式:

代码语言:javascript
复制
value.getOrDefault("asas", Value.<String>defaultValue());

注解的进一步扩展

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图解jdk1.8新特性(3)--- 注解与类型推测优化
    • 获取同一类型多个注解
      • 更好的类型推断
        • 注解的进一步扩展
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档