从父类返回子类
我有一个生成器类,它从大多数方法返回自身,以允许菊花链。为了使这适用于子类,我希望父方法返回子方法的实例,以便子方法可用于链接到末尾。
public class BaseBuilder<T extends BaseBuilder<T>> {
public T buildSomething() {
doSomeWork();
/* OPTION #1: */ return this; // "Type mismatch: cannot convert from BaseBuilder<T> to T"
/* OPTION #2: */ return T.this; // "Type mismatch: cannot convert from BaseBuilder<T> to T"
/* OPTION #3: */ return (T) this; // "Type safety: Unchecked cast from SqlBuilder<T> to T"
}
}
public class ChildBuilder extends BaseBuilder<ChildBuilder> {}
选项 #1 和 #2 导致编译错误,选项 #3 导致警告(尽管可以使用 来抑制)。这里有更好的方法吗?如何安全地将基础建设者降级为儿童建筑商?@SuppressWarnings("unchecked")