泛型数组 @SafeVarargs 怎么使用?

作者站长头像
站长
· 阅读数 6
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] arr = asArray("one", "two", "three");
        System.out.println(Arrays.toString(arr));
        String[] firstTwo = pickTwo("one", "two", "three");
        System.out.println(Arrays.toString(firstTwo));
    }

    static <K> K[] pickTwo(K k1, K k2, K k3) {
        return asArray(k1, k2);
    }

    @SafeVarargs
    static <T> T[] asArray(T... objs) {
        return objs;
    }
}

泛型数组 @SafeVarargs 怎么使用?

pickTwo报错: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String;

@SafeVarargs 怎么没效果呢?不是这样用的吗?

回复
1个回答
avatar
test
2024-06-26
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> arr = asList("one", "two", "three");
        System.out.println(arr);
        List<String> firstTwo = pickTwo("one", "two", "three");
        System.out.println(firstTwo);
    }

    static <K> List<K> pickTwo(K k1, K k2, K k3) {
        return asList(k1, k2);
    }

    @SafeVarargs
    static <T> List<T> asList(T... objs) {
        return new ArrayList<>(Arrays.asList(objs));
    }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容