具有多个继承类的通用返回类型的自引用方法

扎子:

这可能很难描述。但是,我会尝试的;)

遵循流利的风格,类的方法通常返回类实例本身(此)。

public class A {

    public A doSomething() {

        // do something here

        return this;
    }

}

当扩展这种流利的样式类时,可以在第一个继承步骤中通过泛型类型将返回类型强制转换为超类中的该泛型类型,这相当容易。

public class A<T extends A<T>> {

    public T doSomething() {

        // do something here

        return (T) this;
    }

}

public class B extends A<B> {

    // an extended class of class A

}

但是,在此扩展类上执行另一个继承步骤时,尝试定义方法(在上层类中)的通用返回类型和类描述本身(例如,super-super中的方法)时遇到麻烦类不会返回扩展类的类型,而是返回超类的类型。但是,我的意图是这些流利的样式方法应始终返回当前类的类型(而不是上层类)。

那么有可能通过使用泛型来定义解决方案吗?

PS:我知道,一个简单的解决方法可能是覆盖扩展类中的所有这些方法,并将其强制转换为当前类型。但是,我对更优雅的解决方案感兴趣;)

哈德:

您可以尝试:

class A<T> { }

class B<T extends A<? super T>> extends A<T> { }

class C extends B<C> { }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeScript:继承类中静态方法的自引用返回类型

TypeScript:继承类中方法的自引用返回类型

如何引用具有多个界限的通用返回类型

具有返回类型的Java继承方法

具有通用返回类型的可空引用类型

具有自类型,mypy类型检查失败的通用协议中的类方法

具有通用返回类型的覆盖方法

从多个类继承并更改一个父类的所有方法的返回类型

如何从具有通用返回类型的方法中返回具体类的实例

具有通用类类型约束的通用方法

如何返回具有通用类型的类实例作为具有通用类型的接口?

具有多值返回类型错误的类继承

具有通用类型的类

结果类型协方差-具有返回接口类型和特定类型的方法的通用类

具有通用列表的类继承设计

具有通用返回类型的覆盖方法,没有警告

具有多个继承类和一个通用列表的类

在通用方法中返回接口继承的类

具有继承的自引用泛型

如何继承具有不同泛型返回类型的方法

如何编写具有通用类类型的Java方法?

具有通用返回类型的零方法

具有从非通用基类继承的通用类的MongoDB C#驱动程序类型区分符

具有模板化类的通用引用

当具有有界类型参数的类的方法返回其自身类型的值时,如何让返回值保持通用(不进行强制转换)?

继承具有改进的返回类型的接口

从具有通用返回类型的crtp基类的派生类中调用函数

具有通用Java的类型参数类

具有通用类型的Scala类