当前位置: 首页 > 知识库问答 >
问题:

java - 泛型数组 @SafeVarargs 怎么使用?

梁丘诚
2023-10-13
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;    }}

image.png

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

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

共有1个答案

董飞
2023-10-13
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));    }}
 类似资料:
  • 问题内容: 我的任务是用Java编写哈希表,该哈希表必须适用于任何数据类型。我正在编写的代码规则如下:-哈希表必须具有一个数组作为基础数据结构,其大小在构造对象时确定- 发生冲突时,应该放置碰撞的元素链接列表,该列表包含哈希表中该索引(键)处的所有元素 因此,对于基础数据类型,我做了一个LinkedList类型的数组(自定义,不是Java API LinkedList)。 当然,问题是实例化此数组

  • 问题内容: 因此,我正在开发这个通用的HashTable类,并且希望将其通用地用于任何数量的传入类型,并且我还想将内部存储数组初始化为LinkedList的数组(出于冲突目的),其中为确保类型安全,每个LinkedList都被预先指定为HashTable类中的泛型类型。我该怎么做?以下代码最能阐明我的意图,但当然不会编译。 问题答案: Java中的泛型不允许创建具有泛型类型的数组。您可以将数组转换

  • 问题内容: 我最近开始学习JAVA泛型。一切都说得通,我现在有点理解。但是有一件事让我烦恼-您无法创建通用类型的数组。 我想实现诸如队列和堆栈之类的抽象数据类型,但是要使用某种通用类型作为存储在堆栈中的基础数据。我将如何解决?我确定我想念但那是什么? 提前致谢。 问题答案: 《有效的Java》,第5章,GENERICS,第25项:首选列表而不是数组 : 数组在两个重要方面不同于通用类型。首先,数组

  • 我不想为每个类型T编写这个方法只是为了调用getMessage()并将其传递给下一个方法。 有可能写出这样的方法吗?我只想访问ConstraintViolation接口的方法,这些方法不依赖于类型T(如字符串getMessage())。

  • 我试图搜索任何数据类型(Int、Strings、Chars等)的数组查看是否存在与您输入的元素匹配的元素。您应该返回匹配元素的索引。有两个类正在使用。 我得到的错误是: 它的建议是使方法静态,但是,这样做会在Search类中出现错误: 搜索类: 跑步者等级: 在这种情况下,最好的解决方案是什么? 谢谢