BandedCoverage.evaluator() is a method returning an object which can be used for computing or interpolating values of a coverage at arbitrary geospatial positions. The evaluator takes care of reprojecting the given positions and converting to grid coordinates. The type of this evaluator is the BandedCoverage.Evaluator interface.
GridCoverage.evaluator() overrides that method for returning a more specialized type, which provides additional methods specific to gridded data (for example setDefaultSlice(…). However the type of the evaluator returned by this method is the GridEvaluator concrete type. It was a mistake, that method should have returned an interface. Not doing so make more difficult to create for example evaluators that are wrappers around other evaluators.
We propose to add a new GridCoverage.Evaluator interface and to change the return type of GridCoverage.evaluator() to that interface. The latter action would be an incompatible change which will need to be reported in the release note. But hopefully this method is not yet too widely used, it should be an easy change for users.