@SafeVarargs

2022-08-17 21:11:54 浏览数 (1)

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

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

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

这里用到了一个注解SafeVarargs

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

例如:

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

不加的话会编译错误

再放几个例子吧:

代码语言: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) {
        }
    }

}

0 人点赞