我正在尝试用Java创建一个抽象类的方法。
说B和C扩展抽象A.
在A中有一个方法void doSomething(???)
我希望B.doSomething(B)
能够正常工作,但B.doSomething(C)
不应该。我也希望C.doSomething(C)
能够正常工作,但C.doSomething(B)
不应该。这可能吗?
编辑:我希望在A
中定义方法编辑2:使用LaShane的答案......
A b = new B();
A c = new C();
b.doSomething(c);//how can I prevent this?
答案 0 :(得分:3)
您可以这样实现:
abstract class A<T> {
abstract void doSomething(T obj);
};
class B extends A<B> {
@Override
void doSomething(B obj) {
}
};
class C extends A<C> {
@Override
void doSomething(C obj) {
}
};