相关疑难解决方法(0)

Java:在超类方法签名中返回子类

我正在研究一个问题,其中有几个实现Foo,伴随着几个FooBuilder.虽然它们Foo共享几个需要设置的常见变量,但它们也有不同的变量,需要各自FooBuilder实现某些特定功能.为了简洁起见,我想让安装FooBuilder人员使用方法链,比如:

public abstract class FooBuilder {
  ...

  public FooBuilder setA(int A) {
    this.A = A;
    return this;
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

public class FooImplBuilder extends FooBuilder{
  ...
  public FooImplBuilder setB(int B) {
    this.B = B;
    return this;
  }
  public FooImplBuilder setC(int C) {
    this.C = C;
    return this;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

等等,有几种不同的FooBuilder实现方式.这在技术上完成了我想要的一切,但是,这种方法对执行方法链接时方法调用的顺序很敏感.以下是方法未定义的编译错误:

someFoo.setA(a).setB(b)...
Run Code Online (Sandbox Code Playgroud)

要求开发人员考虑链中方法调用的顺序.为了避免这种情况,我想让setter以FooBuilder某种方式返回实际的实现子类.但是,我不知道该怎么做.什么是最好的方法?

java interface subclass superclass

24
推荐指数
3
解决办法
1万
查看次数

学习Java泛型的资源?

我显然需要在这个Java领域提高我的知识,或者我注定要生成"看起来相同但不完全"的代码.
我已经有了基地......但我正在寻找仅针对此的训练/ tuturial.

谢谢

java generics

14
推荐指数
2
解决办法
6983
查看次数

标签 统计

java ×2

generics ×1

interface ×1

subclass ×1

superclass ×1