[ https://issues.apache.org/jira/browse/SIS-578?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Desruisseaux closed SIS-578. ----------------------------------- > Remove contravariance in filters and expressions > ------------------------------------------------ > > Key: SIS-578 > URL: https://issues.apache.org/jira/browse/SIS-578 > Project: Spatial Information Systems > Issue Type: Task > Components: Features > Affects Versions: 1.1, 1.2, 1.3 > Reporter: Martin Desruisseaux > Assignee: Martin Desruisseaux > Priority: Major > Fix For: 1.4 > > > Since SIS 1.1, Filters and expressions in {{org.apache.sis.filter}} package > have methods with a signature like below. This signature reproduced the state > of GeoAPI 3.1 draft (not yet released). > {code:java} > List<Expression<? super R, ?>> getParameters(); > {code} > However experience has shown that contravariance (the {{<? super>}} part) > cause difficulties that are hard to resolve. The problem is that filters are > often chained. When a code follows a chain of filters, it may need to check > for parameters of parameters. In such cases, invoking the above > {{getParameters()}} method, then invoking again {{getParameters()}} on the > result, gives a type that looks like {{<? super ? super R>>, which is > identified by the Java compiler as {{<? super #CAP1>}}. The consequence is > many compilation errors of the kind "no method match {{List<Expression<? > super #CAP1, ?>>}} which are hard to resolve otherwise than by unsafe cast. > Consequently, for having more type-safe code, it seems necessary to change > above method signature like below: > {code:java} > List<Expression<R, ?>> getParameters(); > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)