我为什么要关心Java没有泛型泛型?
这是我最近在一次采访中提出的一个问题,候选人希望将其添加到Java语言中。人们通常认为Java没有通用化泛滥的痛苦,但是当Java 泛化后,候选人实际上并不能告诉我他在那里可以实现的目标。 显然,由于Java中允许使用原始类型(以及不安全的检查),因此有可能破坏泛型并以List<Integer>实际包含Strings的a结尾。如果类型信息得到证实,这显然变得不可能。但是肯定不止于此! 人们可以发布他们真正想做的事的示例吗?我的意思是,显然您可以List在运行时获取a的类型-但是您将如何处理? 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?