具有有界参数的泛型的 Java 接口(interface)

标签 java generics

我有一个要求,我需要使用泛型,因为客户在使用我的服务时可以使用他们想要的数据类型。代码如下:

public interface MyService<T extends Base> {

    void meth1(T type);
}

@Service("abc")
public class MyServiceImpl<T> implements MyService<T extends Base> {

    @Override
    public void meth1(T type) {
    }
}

其中 Base 是一个抽象类。客户将使用它的子类来调用此服务。

public abstract class Base {
}

问题:实现类 (MyServiceImpl) 无法编译。我不确定这里的问题。

客户端将使用此服务并推送其作为 Base 子类的数据类型。例如这样的事情:

    @Autowired
    @Qualifier("abc")
    private MyService<xx> service;


service.meth1(xx)  //where xx is subclass of Base

我是不是在做一些根本性的错误。请提出建议。

最佳答案

类型绑定(bind)应该在类型参数的声明中:

public class MyServiceImpl<T extends Base> implements MyService<T>

关于具有有界参数的泛型的 Java 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49994385/

相关文章:

java - Jmockit 期望错误

Java Unicode 到十六进制字符串

java - java中这两种调用静态变量的区别

java - Spring MappedInterceptor 映射语法

java - 在 CentOS 上安装 Java 1.6 Update 141

generics - F# 泛型约束联合类型

java - 访问者模式可以用于执行通用双重调度吗?

Java 泛型的好奇心

c# - C# 中的类名中的尖括号有什么作用?

c# - 将实例化的 System.Type 作为泛型类的类型参数传递