gpt4 book ai didi

java - 如何创建一个只接受泛型参数而不接受原始类型参数的泛型方法?

转载 作者:行者123 更新时间:2023-11-29 04:07:17 24 4
gpt4 key购买 nike

我想创建一个仅接受整数数组列表的通用方法。但该方法也接受原始类型。我怎样才能限制它只接受一个整数数组列表?

package generics;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class GenericBox<T> {
public static void main(String[] args) {
ArrayList l1 = new ArrayList();
l1.add(1);
l1.add("subbu");
printListValues(l1);

ArrayList<Integer> l2 = new ArrayList<>();
l2.add(1);
l2.add(2);
printListValues(l2);
}
public static <T extends ArrayList<Integer>> void printListValues(T t){
System.out.println(t);
}
}

谢谢,子布。

最佳答案

But the method is also accepting a raw type

你是说你想禁止这个电话吗?

printListValues(new ArrayList());  // raw type

编译器会发出关于使用原始类型的警告,但它会编译。您也许可以告诉您的编译器(检查其文档或配置 GUI 以了解如何操作)将此视为错误,从而禁止它。

编译器通常允许这样做的原因是向后兼容。泛型是后来添加的(使用 Java 5)并且是“选择加入”的。如果代码使用泛型类型,它们必须是正确的,但您可以完全放弃它。旧的“原始”代码仍然可以继续工作(这是 Java 的一个强大卖点)。

也许有一个编译器选项可以将警告转换为错误,因此您可以防止自己使用原始类型。但你不能强制别人这样做。

关于java - 如何创建一个只接受泛型参数而不接受原始类型参数的泛型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57817751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com