Tag: fluent interface

我可以在java中使用方法链接而不执行不安全操作的抽象构建器类吗?

我正在尝试为一些构建器类创建一个抽象基类,这样我就可以轻松地在Builder实现之间重用代码。 我希望我的构建器支持方法链接,因此方法必须返回最具体类型的“this”实例。 我想我可以用generics来做这件事。 不幸的是,如果不使用不安全的操作,我就无法做到这一点。 可能吗? 下面是我如何尝试它(以及它如何工作)的示例代码。 我想避免在“foo()”中输入T(导致未经检查的警告),这可以吗? public class Builders { public static void main( final String[] args ) { new TheBuilder().foo().bar().build(); } } abstract class AbstractBuilder<T extends AbstractBuilder> { public T foo() { // set some property return (T) this; } } class TheBuilder extends AbstractBuilder { public TheBuilder bar() { // set some […]

自绑定generics类型,具有流畅的接口和inheritance

我使用流畅的inheritance接口。 我声明基类Constructor受到保护,所以你不能创建一个Foo ,它会在调用add()时导致ClassCastException。 但我遇到了返回新Foo实例的静态方法的问题。 public class Foo<T extends Foo> // if i change to extends Foo i only get warnings { public static Foo createFoo() // <– error { return new Foo(); // <– error } protected Foo() {} public T add() { //… return (T)this; } } public class Bar extends Foo { public […]