how to tell 2 methods are override-equivalent

Vicente Romero vicente.romero at oracle.com
Fri Mar 17 13:08:21 UTC 2017


Hi Hamlin,

How do you obtain m2? I mean at some point it should have been obtained 
from an executable element or similar. In the worst case you can always 
generate a simple test case and try to compile it for example:

class Test {
     void getContent(java.lang.Class<?>[] c) {}
     void getContent(java.lang.Class[] c) {}
}

this one will fail saying that both methods have the same erasure,

HTH,
Vicente

On 03/16/2017 11:15 PM, Hamlin Li wrote:
>
> Hi,
>
> ( I'm not sure if this is the right alias to ask the question, please 
> help forward if necessary. )
>
> I have a question about telling whether one method is subsignature of 
> another one. My situation is,
>
> 1. there is a TypeElement *t1 *which represents java.net.URL, and a 
> ExecutableElement *m1* which represents 
> getContent(java.lang.Class*<?>*[]),
>
> 2. there is a String *t2* which is "java.net.URL", and another String 
> *m2 *which is "getContent(java.lang.Class[])".
>
> The difference between m1 and m2 is that, m1 is an instance of 
> ExecutableElement, m2 is an instance of String; there is a wildcard 
> type argument in m1.
>
>
> Is there a way to tell whether m1 and m2 are override-equivalent, m2 
> is subsignature of m1?
>
> I suppose I should use 
> javax.lang.model.util.Types.isSubsignature(ExecutableType m1, 
> ExecutableType m2), but I don't know how can I convert 
> ExecutableElement *m1* and String *m2* to**ExecutableType.
>
> Or I'm in wrong direction?
>
>
> Thank you
>
> -Hamlin
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20170317/5bd0b46c/attachment.html>


More information about the compiler-dev mailing list