What I have:
I have a generic method which I want to override:
JavaScript
x
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:
JavaScript
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:
JavaScript
class C<T extends A> {
public void function(T param) {
// ...
}
}
class D<T extends B> extends C<T> {
@Override
public void function(T param) {
// ...
}
}