Java 根接口的b/c线性继承结构不工作:可复制

Java 根接口的b/c线性继承结构不工作:可复制,java,generics,inheritance,Java,Generics,Inheritance,这是一个后续行动,它本身就是一个后续行动 我有下面的接口/类框架代码 interface Copyable<C extends Copyable<C>> { interface Validator<V extends Validator<V>> extends Copyable<V> { interface ValidateValue<O> extends Validator<ValidateVa

这是一个后续行动,它本身就是一个后续行动

我有下面的接口/类框架代码

interface Copyable<C extends Copyable<C>>  {
   interface Validator<V extends Validator<V>> extends Copyable<V>  {
      interface ValidateValue<O> extends Validator<ValidateValue<O>>  {

abstract class AbstractValidator<V extends AbstractValidator<V>> implements Validator<V>  {
   class VVNull<O> extends AbstractValidator<VVNull<O>> implements ValidateValue<O>  {

VVNull是一个ValidateValue。看在上帝的份上,它将自己作为一个通用参数传递,并实现ValidateValue。继承是完全线性的,没有菱形继承或任何东西,它是可复制的。你有没有尝试过做接口验证值扩展验证程序?在我的帖子中添加了答案。但是,正如前面两个问题向我表明的那样,Copyable确实需要这些泛型。嗯,他们错了。代码中不使用这些边界。在没有它们的情况下,它同样有效。这些边界在代码中没有使用。我不明白这部分。我得到的印象是,自引用泛型强制所有实现类也都具有自引用泛型,这在深入层次结构时会变得非常混乱;一个是通过子类化AbstractValidator来实现Validator,另一个是通过实现ValidateValue来扩展Validator。类不能同时实现具有两个不同类型参数的接口。
class VVNull<O> extends AbstractValidator<VVNull<O>> implements ValidateValue<O>  {
VVNull<O,V extends VVNull<O,V>>
public class CopyableCProblem  {
}

interface Copyable<C extends Copyable<C>>  {
   C getObjectCopy();
}

interface Validator<V extends Validator<V>> extends Copyable<V>  {
}

interface ValidateValue<O> extends Validator<ValidateValue<O>>  {
   @Override
   ValidateValue<O> getObjectCopy();
   boolean isValid(O o_o);
}

abstract class AbstractValidator<V extends AbstractValidator<V>> implements Validator<V>  {
}

class VVNull<O> extends AbstractValidator<VVNull<O>> implements ValidateValue<O>  {
   @Override
   public VVNull<O> getObjectCopy()  {
      return  this;
   }
   public boolean isValid(O o_o)  {
      return  (o_o != null);
   }
}