相关疑难解决方法(0)

我为什么要关心Java没有具体化的泛型?

这是我最近在一次采访中提出的一个问题,即候选人希望看到添加到Java语言中的问题.它通常被认为是一种痛苦,Java没有具体化的仿制药,但是,当被推动时,候选人实际上无法告诉我他在那里可能取得的那些事情.

显然因为原始类型在Java中是允许的(以及不安全的检查),所以可以颠覆泛型并最终List<Integer>得到(例如)实际包含Strings.如果类型信息具体化,这显然是不可能的; 但必须有更多!

人们可以发布他们真正想要做的事情的例子,是否有可用的具体化的泛型?我的意思是,显然你可以List在运行时得到一个类型- 但是你会用它做什么?

public <T> void foo(List<T> l) {
   if (l.getGenericType() == Integer.class) {
       //yeah baby! err, what now?
Run Code Online (Sandbox Code Playgroud)

编辑:对此的快速更新,因为答案似乎主要是关注需要传入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?
Run Code Online (Sandbox Code Playgroud)

java generics reification

101
推荐指数
10
解决办法
1万
查看次数

java中接口实现的约束

可能重复:
Java泛型约束需要像C#这样的默认构造函数

我想设置一个约束类型T,它必须有一个没有参数的构造函数.在C#中它将是:

public interface Interface<T> where T : new() { }

这个功能是否在Java中可用?

更新:是否有一些技巧使通用类型T有一个构造函数?

java interface

6
推荐指数
2
解决办法
1310
查看次数

标签 统计

java ×2

generics ×1

interface ×1

reification ×1