Assume the following existing classes:
class A {
public void foo() { ... };
...
}
class A1 extends A { ... };
class A2 extends A { ... };
...
class A1000 extends A { ... };
now, we need to create a variant of each Axx class that overrides "foo" method. The basic idea was:
class B<T extends A> extends T {
@Override public void foo () { ... };
}
But it seems is not posible to extend a class from one of their parametized types.
The objective is to skip the need of following new code:
class B1 extends A1 { @Override public void foo() { ... }; };
class B2 extends A2 { @Override public void foo() { ... }; };
....
class B1000 extends A1000 { @Override public void foo() { ... }; };
and allow statements like:
...
B<A643> b643 = new B<A643>;
b643.foo();
...
Any hint?
Thanks a lot.
Tactually used for anything, hence you could just eliminate it from your code entirely. Also, ifTreally is a formal type parameter, thenB extends Tis not valid.foo. For instance,A1,A2, ...A1000are completely (or mostly) unrelated and each have their own methods, andB1,B2, ...B1000are similarly unrelated, each having the exact same methods as theirAnnncounterparts as well as this common implementation offoo(which might or might not be an override or useA's protected members).