当你雇用你可能有以下情形一口流利的做法:爪哇 - 继承流利的方法的返回类型返回事件类的类型,而不是父母的
public class Foo<T extends a>{
public Foo<T> someMethod(){
System.out.println("foo");
return this;
}
}
public class Bar<T extends b> extends Foo<T> {
public Bar<T> barMethod(){
System.out.println("bar");
return this;
}
}
public class a{}
public class b extends a{}
流利接口的强度,你可以链方法调用,但同时酒吧继承的someMethod(),返回类型为富不酒吧,将打破链条如下:
new Bar<b>().someMethod().barMethod();
答案之一可能是添加@Overrides每一个继承的方法,这样有酒吧附加方法:
@Override
public Bar<T> someMethod(){
System.out.println("foo");
return this;
}
但是在大类和扩展的类层次结构中,这可以证明冗余的混乱吗?!是否有适当的返回类型给予流利的方法,从而每个继承它的类将返回一个特定类型的对象(这样我们就可以链接方法而不需要强制转换)?
我想:
public <U extends Foo<T>> U someMethod(){
System.out.println("foo");
return this;
}
要唉,都无济于事。我希望有人知道这个问题的简单和优雅的解决方案。该项目很大,因此如果可能的话,它需要可维护和可扩展。
非常感谢您在此场景中提供的任何帮助。
但仍然有一个'铸造',OP不需要。我不知道为什么。嗯。但是这个演员比较好。它在一个地方。所以,OP应该可以。其他主帮助他。 ;) –
@RohitJain看到我对上面的回答发表评论:这是一个可用性的事情,试图使它成为一个非常简单的lib,用于客户端包含在他们的项目中。 Marko Topolnik的解决方案虽然很有趣,但我还没有考虑过。看起来有些描述是不可避免的? – ComethTheNerd
@MarkoTopolnik。是的,这就是为什么在我的评论结束时,我补充说,它是一个更好的演员,因为它在一个地方。:) –