java - 创建仅限于自己类的通用接口(interface)

标签 java generics interface

我想为这两个类创建一个通用接口(interface),但我不确定如何以正确的方式指定泛型。

public class ThingA implements Thing {
    public ThingA createCopy(ThingA original);
}

public class ThingB implements Thing {
    public ThingB createCopy(ThingB original);
}

我试过了。

public interface Thing<V extends Thing<V>> {
    public V createCopy(V original);

}

但我仍然可以做这样的事情,这是不应该被允许的。

public class ThingB implements Thing<ThingA> {
    public ThingA createCopy(ThingA original);
}

最佳答案

没有 this 关键字泛型(也没有方法参数和返回值声明),因此您无法完全按照自己的意愿行事。

换句话说,接口(interface)将允许确保类中的所有方法使用一致的类型,但不能引用类类型本身。

关于java - 创建仅限于自己类的通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18443418/

相关文章:

c# - 为什么 IList<>.Reverse() 不像 List<>().Reverse 那样工作

c# - 是否可以查看使用接口(interface)实例化的类方法的摘要?

java - 如何在docker中运行maven selenium项目(Maven + Selenium + java + TestNg + docker)

java - Java 枚举的通用接口(interface)

c++ - 记录接口(interface)

generics - dart 如何获取带索引的枚举?

c# - 无法从用法中推断方法 'xyz' 的类型参数

java - 将 url 分配给 Java EE 项目中的 ajax (js) 函数

JAVA:更改日历对象的时区而不更改日期/时间时的奇怪行为

java - 在 Hibernate 中操作列表 SQL 查询失败?