前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >@SafeVarargs

@SafeVarargs

作者头像
阿超
发布2022-08-17 21:11:54
2880
发布2022-08-17 21:11:54
举报
文章被收录于专栏:快乐阿超快乐阿超

不管怎样的事情,都请安静地愉快吧!这是人生。我们要依样地接受人生,勇敢地大胆地,而且永远地微笑着——卢森堡

前两天给mybatis-plus贡献了代码

https://gitee.com/baomidou/mybatis-plus/pulls/192

这里用到了一个注解SafeVarargs

我们在使用动态参数+泛型的时候,会提示来自形参化 vararg 类型的可能的堆污染

例如:

image-20211021154320305
image-20211021154320305

我们这里加上@SafeVarargs后发现它只能加在final或者static修饰的方法上:

image-20211021154456182
image-20211021154456182

不加的话会编译错误

image-20211021154513912
image-20211021154513912

再放几个例子吧:

代码语言:javascript
复制
package com.ruben.simplescaffold;


import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

/**
 * 测试类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/7/11 0011 18:09
 */
public class Tests {

    @Test
    void contextLoads() {
    }

    @SafeVarargs
    static void function(List<String>... stringLists) {
    }

    abstract static class BaseUser implements UserInterface {

        @SafeVarargs
        final <T> void gamma(T... ts) {
        }

        @Override
        @SafeVarargs
        public final void method(Optional<Object>... optionals) {
            UserInterface.super.method(optionals);
        }
    }

    interface UserInterface {

        default void method(Optional<Object>... optionals) {
        }

        @SafeVarargs
        static <T> void gamma(Class<T>... classes) {
        }
    }

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档