java - 泛型和静态方法

标签 java generics static-methods

我有这个静态方法

public static List<? extends A> myMethod(List<? extends A> a) {
  // …
}

我正在调用它

List<A> oldAList;
List<A> newAList = (List<A>) MyClass.myMethod(oldAList);

由于未经检查转换为 List<A>,因此会发出警告.有什么办法可以避免强制转换吗?

最佳答案

您需要定义返回的类型匹配参数(并扩展 A)

public static <T extends A> List<T> myMethod(List<T> a) {
    // …
}

然后就可以写了

List<E> list1 = .... some list ....
List<E> list2 = myMethod(list1); // assuming you have an import static or it's in the same class.

List<E> list2 = SomeClass.myMethod(list1);

关于java - 泛型和静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917546/

相关文章:

java - System.out.println - 这个方法在 Java 中是链式的吗?

java - Java 如何在非常小的设备上运行?

java - 运行 JPanel 窗体

python - 指向 Python 中静态方法的指针

java - 从接口(interface)覆盖通用返回类型

java - Java泛型类——如何理解?

c++ - 如何从私有(private)基类调用静态方法?

java - 如果受影响的行数为零,则强制抛出异常

java - 获得多功能服务的最佳方式?

arrays - 有什么有效的方法可以将 TArray<string> 转换为 TStringDynArray?