泛型数组 @SafeVarargs 怎么使用?
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;
}
}
调pickTwo
报错: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String;
@SafeVarargs
怎么没效果呢?不是这样用的吗?
回复
1个回答
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));
}
}
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容