将泛型Java限制为一个类

时间:2018-09-26 13:53:37

标签: java generics

在C#中,这是可能的:

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

因此,泛型被限制/局限于一个类。

使用Java是否可能?

2 个答案:

答案 0 :(得分:2)

通用参数始终是Java中的类。没有其他选择。该语言不允许将原语作为参数,并且没有等效于C#的struct

答案 1 :(得分:2)

如果您希望接口具有某种基本类型,则可以进一步限制它,方法是在您的泛型中添加extends关键字

public interface MyGenericInterface<T extends List<?>> {

  T convert(String value);

}

现在,每个实现MyGenericInterface的类都必须使用在其实现中扩展List的对象

public class MyClass implements MyGenericInterface<ArrayList<String>> {

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