Например, допустим, это мой абстрактный класс:
abstract class A{
int x;
int y;
void foo(A fooMe);
}
... и B
и C
- это два класса, которые расширяют A
.
Я хочу, чтобы B
мог звонить foo()
только на других B
с, а C
мог звонить foo()
только на других C
с. Но я хочу, чтобы это было в руках программиста, который расширяет мой класс A
, то есть я хочу, чтобы этот функционал был обеспечен только в коде A
.
Что я могу сделать? (Если это возможно) Я бы хотел избежать какого-либо слишком сложного хакерского или обобщенного решения - я все еще хочу, чтобы foo
можно было вызывать так, например:
B b=new B();
B bb=new B();
bb.foo(b);
Редактировать : Теперь я готов принять решение, которое использует дженерики, если у кого-то есть идеи ... (я не мог придумать одну)?