What I have:
I have a generic method which I want to override:
class A {}
class B extends A {}
class C {
public <T extends A> void function(T param) { //will be overridden in heirs
//...
}
}
What I want:
There will be few classes that extend C-class and narrow parametrization. Example:
class D extends C {
@Override
public <T extends B> void function(T param) { //T extends B, not A!! Or even better if it can be only B-class, not heirs
//...
}
}
Question:
How can I achieve that?
EDIT:
Class C has many heirs: D, F, G, H… Each of those classes has the single method f(T param). And for each of those method I need T will be different heir of Z class in each case.
So I decide that I can set common API in C-class with help of generics. But if its impossible, maybe other way?
Advertisement
Answer
Parameterizing your classes could be a solution:
class C<T extends A> {
public void function(T param) {
// ...
}
}
class D<T extends B> extends C<T> {
@Override
public void function(T param) {
// ...
}
}