这是一个有点lazyweb问题的,但你的声望,以便:-)如何编写一个返回“this”类型实例并在扩展时工作的Java函数?
我有一个返回自己的实例允许链接一个Java类 (如ClassObject.doStuff()。doStuff())
例如:
public class Chainer
{
public Chainer doStuff()
{
/* Do stuff ... */
return this;
}
}
我想延长这一类。有没有办法,或许使用泛型,来扩展这个类而不必覆盖每个方法签名?
E.g.没有:
public class ChainerExtender extends Chainer
{
public ChainerExtender doStuff()
{
super.doStuff();
return this;
}
}
我曾尝试:
public class Chainer
{
public <A extends Chainer> A doStuff()
{
/* Do stuff ... */
return (A)this;
}
}
public class ChainerExtender extends Chainer
{
public <A extends Chainer> A doStuff()
{
/* Do stuff ... */
return super.doStuff();
}
}
但这并没有工作给错误:
type parameters of <A>A cannot be determined;
no unique maximal instance exists for type variable A with upper bounds A,Chainer
我是被迫发生类声明,如:
public class Chainer<T extends Chainer<T>> {}
public class ChainerExtender extends Chainer<ChainerExtender>
谢谢,虽然我想我应该用super。 doStuff()? –
2008-10-23 05:36:41
当我有机会时,我会检查它 - 谢谢:-)并且upvote进来一些小时数:P – 2008-10-23 06:16:31