<div dir="ltr"><div>Question: Should this program generate an unchecked cast warning?<br></div><div><br></div><div style="margin-left:40px"><span style="font-family:monospace">import java.lang.invoke.VarHandle;</span></div><div style="margin-left:40px"><span style="font-family:monospace">class VarHandleCast<V> {</span><br><span style="font-family:monospace"></span><span style="font-family:monospace">    VarHandle vh;</span><br><span style="font-family:monospace">    V method(</span>Object<span style="font-family:monospace"> obj) {</span><br><span style="font-family:monospace">        return (V)vh.getAndSet(this, obj);  // unchecked cast?</span><br><span style="font-family:monospace">    }</span><br><span style="font-family:monospace">}</span><br></div><div><br></div><div>Currently, it does not.</div><div><br></div><div>Presumably that has something to do with this code in <span style="font-family:monospace">Types.java</span> but I'm not sure why this would mean there should be no warning:<br></div><div><br></div><div><span style="font-family:monospace">    /**<br>     * A polymorphic signature method (JLS 15.12.3) is a method that<br>     *   (i) is declared in the java.lang.invoke.MethodHandle/VarHandle classes;<br>     *  (ii) takes a single variable arity parameter;<br>     * (iii) whose declared type is Object[];<br>     *  (iv) has any return type, Object signifying a polymorphic return type; and<br>     *   (v) is native.<br>    */<br>   public boolean isSignaturePolymorphic(MethodSymbol msym) {<br>       List<Type> argtypes = msym.type.getParameterTypes();<br>       return (msym.flags_field & NATIVE) != 0 &&<br>              (msym.owner == syms.methodHandleType.tsym || msym.owner == syms.varHandleType.tsym) &&<br>               argtypes.length() == 1 &&<br>               argtypes.head.hasTag(TypeTag.ARRAY) &&<br>               ((ArrayType)argtypes.head).elemtype.tsym == syms.objectType.tsym;<br>   }</span></div><div><br></div><div>Thanks,</div><div>-Archie<br></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Archie L. Cobbs<br></div></div>