Java 如何将接口的泛型类型限制为只接受实现者类

Java 如何将接口的泛型类型限制为只接受实现者类,java,generics,Java,Generics,我的情况不同,但作为一个例子 public interface Comparable<T> 因为它符合条件。这在Java中是不可能的 考虑是否可以要求Comparable的类型参数与实现类相同。然后,如果您有一个类Foo实现了Comparable,然后还有一个类栏扩展了Foo,栏也会自动实现Comparable,就像Java中的继承一样。但这违反了实现类与类型参数相同的约束,因为Bar不实现Comparable(而且您甚至不能显式地让Bar实现Comparable,因为类不能实现

我的情况不同,但作为一个例子

public interface Comparable<T> 

因为它符合条件。

这在Java中是不可能的


考虑是否可以要求
Comparable
的类型参数与实现类相同。然后,如果您有一个
类Foo实现了Comparable
,然后还有一个
类栏扩展了Foo
栏也会自动实现
Comparable
,就像Java中的继承一样。但这违反了实现类与类型参数相同的约束,因为
Bar
不实现
Comparable
(而且您甚至不能显式地让
Bar
实现
Comparable
,因为类不能实现具有两个不同类型参数的泛型类型).

不能在Java中完成。至少在编译时不是这样。如果你说为什么需要在编译时强制执行这样的限制,我们可以想出不同的设计。请参阅@SergGr以减少运行时的检查。该接口的默认方法执行整个注释处理,并严格要求它们具有相同的类型(或至少是子类型)。为什么该接口必须是泛型的?它是否有一些泛型类型的输入或输出参数?它不能只在代码中使用
this.getClass()
吗?@SergGr更准确地说,我正在使用方法
default void copyFrom(t other)
和扫描
@CopyField
注释的一个接一个字段定义一个接口
Copyable
。。。等
public class MyType implements Comparable<OtherType>
public class MyType implements Comparable<MyType>
public interface Comparable<T extends Comparable<T>>
public class MyType implements Comparable<Integer>