我为什么要关心Java没有经过修饰的泛型呢?
2022-08-31 10:03:18
这是我最近在一次面试中提出的一个问题,作为候选人希望看到添加到Java语言中的东西。Java没有经过修饰的泛型,这通常被认为是一种痛苦,但是当被推动时,候选人实际上无法告诉我,如果他们在那里,他可以实现什么样的目标。
显然,由于原始类型在Java中是允许的(并且不安全的检查),因此可能会破坏泛型并最终得到(例如)实际包含s的泛型。如果类型信息得到重新定义,这显然是不可能的;但一定不止这些!List<Integer>
String
人们是否可以发布他们真正想做的事情的例子,是否有可用的重新定义的泛型?我的意思是,显然你可以在运行时获得a的类型 - 但是你会用它做什么呢?List
public <T> void foo(List<T> l) {
if (l.getGenericType() == Integer.class) {
//yeah baby! err, what now?
编辑:对此进行快速更新,因为答案似乎主要关注是否需要将a作为参数传递(例如)。我正在寻找更多的东西,就像这是不可能的。例如:Class
EnumSet.noneOf(TimeUnit.class)
List<?> l1 = api.gimmeAList();
List<?> l2 = api.gimmeAnotherList();
if (l1.getGenericType().isAssignableFrom(l2.getGenericType())) {
l1.addAll(l2); //why on earth would I be doing this anyway?