[
https://issues.apache.org/jira/browse/TINKERPOP-3015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17876107#comment-17876107
]
Christopher Smith commented on TINKERPOP-3015:
----------------------------------------------
Commenting because I'm still running into this problem in new code with 3.7.2;
I get the following compilation error (which correctly implements the generic
semantics):
{code}
[Static type checking] - Cannot call
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal#hasId(org.apache.tinkerpop.gremlin.process.traversal.P<java.lang.Object>)
with arguments
[org.apache.tinkerpop.gremlin.process.traversal.P<java.lang.String>]
{code}
> Use wildcard instead of Object for hasId predicates
> ---------------------------------------------------
>
> Key: TINKERPOP-3015
> URL: https://issues.apache.org/jira/browse/TINKERPOP-3015
> Project: TinkerPop
> Issue Type: Improvement
> Components: process
> Affects Versions: 3.5.7, 3.6.5
> Reporter: Christopher Smith
> Priority: Minor
>
> From both {{GraphTraversal}} and {{__}}, the {{hasId(P)}} steps specify a
> {{P<Object>}}. Common predicates, such as {{within}}, propagate the generic
> type from their own arguments, so that this produces a compile-time error:
> {code}
> Collection<String> ids = ...
> g.V().hasId(P.within(ids))
> {code}
> I believe that without loss of safety, the signature in both locations could
> be changed to {{P<?>}}, making the typical case of "here's a collection of
> IDs of known type" work smoothly.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)