代码之家  ›  专栏  ›  技术社区  ›  granadaCoder

将Java泛型限制为类

  •  0
  • granadaCoder  · 技术社区  · 6 年前

    在C#,这是可能的:

    public interface IMyCoolInterface<TEntity> where TEntity : class
    {
    }
    

    所以泛型被限制在一个类中。

    这在Java中是可能的吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   John Kugelman Michael Hodel    6 年前

    泛型参数在Java中总是类。别无选择。这种语言不允许原语作为参数,也没有与C#等价的语言 struct .

        2
  •  2
  •   locus2k    6 年前

    如果希望通过在泛型中添加extends关键字使接口具有特定的基类型,则可以进一步限制它

    public interface MyGenericInterface<T extends List<?>> {
    
      T convert(String value);
    
    }
    

    现在每个实现 MyGenericInterface 必须在实现中使用扩展列表的对象

    public class MyClass implements MyGenericInterface<ArrayList<String>> {
    
      @Override
      public ArrayList<String> convert(String value) {
        return new ArrayList<>();
      }
    }