Java泛型类从类型参数中排除集合



我已经找到了一种合适的方法来实现我正在寻找的逻辑,但我很好奇为什么以下不工作。半个小时的搜索没有找到答案,但有可能我的问题措辞不恰当。

我想做的是限制类型参数,使Collections不被接受。虽然我可以测试参数类型,但我更希望IDE指出类不接受Collection作为类型参数。我知道关键字exclude不存在,但我希望它有助于说明手头的问题。

public class Foo<K excludes Collection, V>
{
  //TODO: Carry out Collectionist operations
} 

有没有办法在Java中做到这一点?我认为这不是最佳实践,即使它是可能的,但是我想通过努力扩展我对泛型的理解来满足我的好奇心。

感谢您的时间和考虑!

不可能排除某些类型。由于Java类型接口的方式,我可以简单地卷起我自己的具有完全相同操作的Collection,并且它不会被排除在外。

只是出于好奇,这是一个公平的问题,我不知道有什么方法可以在编译时实现它。您可以在Foo的构造函数中放置运行时检查。

这样是不可能实现的。

当前版本的泛型只支持extends或super。它不支持任何负面的场景

最新更新