Is there a way to say "this method returns this
" using Generics?
Of course, I want to override this method in subclasses, so the declaration should work well with @Override
.
Here is an example:
class Base {
public Base copyTo (Base dest) {
... copy all fields to dest ...
return this;
}
}
class X extends Base {
@Override
public X copyTo (X dest) {
super.copyTo (dest);
... copy all fields to dest ...
return this;
}
}
public <T extends Base> T copyTo (Base dest)
doesn't work at all: I get "Type mismatch: Can't convert from Base to T". If I force it with a cast, the override fails.