【发布时间】:2012-10-29 05:32:17
【问题描述】:
我的子类有问题并试图使我的函数“方法”通用,请参见下文,我在实现类 C1 和 C2 以分别使用 B1 和 B2 类型的对象时遇到问题。
编辑:对不起,如果不清楚,基本上我正在尝试覆盖函数方法,但我需要参数是通用的,所以对于作为 C 的子类的类 C1,它应该使用 B1 作为参数和对于 C1 的子类 C2,它应该使用 B2 作为参数。
我希望实现的行为的代码,但我正在努力使其编译。
这是我的课程
class A{}
class T1{}
class V1{}
abstract class B<T extends T1, V extends V1>{}
class B1 extends B<SomeChildOfT1, SomeChildOfV1>{}
class B2 extends B1{}
abstract class C <E extends B<? extends T1, ? extends T2>> extends A
{
void method(E)
{//bla}
}
class C1<E extends B1> extends C<B1>
{
//method with object B1 as parameter
@override
void method(E){
//bla
}
}
class C2 extends C2<B2>
{
@override
void method(B2)
{
}
}
【问题讨论】:
-
您的解决方案有什么问题?调用堆栈,错误消息?
-
您的问题可以更好地提出。充其量,这段代码甚至无法编译。
-
至少提及你想要达到的目标总是好的。
-
我不能使用 B2 类型的对象作为我在 C2 类中重写的方法的参数。它使用 B1 作为参数,这不是我需要的,因为我在方法中使用了 B2 类型的对象。
-
abstract class B<T extends T1, V extends V1>{}中的T1和V1是什么?可以只是abstract class B<T, V>{}吗?
标签: java generics inheritance overriding