Override generic method with more narrow parametrization
generics, java
Solution
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) {
// ...
}
}
Problem
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?