Repeatable 注解无效的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_31093133/article/details/82736250

网上很多博客只说了Repeatable如何使用,但是很多博客都忽略的很关键的一点,就是gradle的配置。
这会导致按照网上的博客去写代码就会出现Repeatable不生效的问题。

所以千万别忘了在gradle文件中加入下面的配置:

    //指定java8
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

如果不引入compileOptions的这段配置:
使用的时候要这样使用:

@Target( ElementType.TYPE )
    @Retention( RetentionPolicy.RUNTIME )
    public @interface Filters {
        Filter[] value();
    }

    @Target( ElementType.TYPE )
    @Retention( RetentionPolicy.RUNTIME )
    public @interface Filter {
        String value();
    };

    //使用大括号包裹住
    @Filters({
            @Filter( "filter1" ),
            @Filter( "filter2" )
    })
    public interface Filterable {
    }

引入了compileOptions配置后,可以使用快捷写法:

@Target( ElementType.TYPE )
    @Retention( RetentionPolicy.RUNTIME )
    public @interface Filters {
        Filter[] value();
    }

    @Target( ElementType.TYPE )
    @Retention( RetentionPolicy.RUNTIME )
    @Repeatable( Filters.class )//1、这里要著名注解的容器类
    public @interface Filter {
        String value();
    };

    //2、配置了compileOptions以后,在使用的时候就可以直接使用快捷写法啦!
    @Filter( "filter1" )
    @Filter( "filter2" )
    public interface Filterable {
    }

以上就是使用Repeatable需要注意的小知识点啦 (#^.^#)

猜你喜欢

转载自blog.csdn.net/baidu_31093133/article/details/82736250