我想在一流中确定一种功能,即恢复使用该功能的子级。 这就是说,我是A类,职能艰巨。 然后,我创立了B和C子类,延伸A.,我希望B.plugh返回B和C.plugh,以回去C. 是的,他们可以回去A,但打电话的人要么把它投到正确的亚类,这在使用抽签时是痛苦的,要么宣布接收变量为超型,失去类型安全。
因此,我试图用通用语来做,这样写的是:
class A<T extends A>
{
private T foo;
public T getFoo()
{
return foo;
}
}
class B extends A<B>
{
public void calcFoo()
{
foo=... whatever ...
}
}
class C extends A<C>
{
public void calcFoo()
{
foo=... whatever ...
}
}
这似乎可行,但看起来很粗略。
有一件事,我在<条码>A<Text A>上收到警告。 汇编者说,A是通用的,我应具体说明类型。 我猜测,我想说:<条码>,A<Text A<x>。 但是,我会怎么做呢? 我认为,我可以坐在这个无限的场所。
似乎我们不肯撰写<条码>B延伸A<B>,但这不会引起任何投诉,因此可能只是罚款。
这样做是否正确? 是否有更好的办法?