how to tell 2 methods are override-equivalent
Jonathan Gibbons
jonathan.gibbons at oracle.com
Tue Mar 21 21:28:09 UTC 2017
Hamlin,
Use Element.asType() to move from the Element world to the TypeMirror world.
http://download.java.net/java/jdk9/docs/api/javax/lang/model/element/Element.html#asType--
Use Types.asElement(TypeMirror) to go in the reverse direction, from a
TypeMirror to an Element.
http://download.java.net/java/jdk9/docs/api/javax/lang/model/util/Types.html#asElement-javax.lang.model.type.TypeMirror-
but note the reverse direction is lossy and may throw exceptions:
e.g. for type "int", there is no direct element equivalent; for
type List<String>, the element will be the declaration List<T>
-- Jon
On 3/16/17 8: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/20170321/cc9678a9/attachment.html>
More information about the compiler-dev
mailing list