how to tell 2 methods are override-equivalent
huaming.li at oracle.com
Wed Mar 22 08:57:36 UTC 2017
On 2017/3/22 8:50, Jonathan Gibbons wrote:
> Note that while it is relative easy to convert a string containing a
> type name (such as "java.net.URL") to an Element and/or TypeMirror, in
> general it will not be possible to convert a string like
> "getContent(java.lang.Class)" to a Element or TypeMirror, because
> the string as written does not contain sufficient information.
> Even if you did provide more info, you would still have to be careful
> to evaluate the string in the same compilation context as that to
> which you are comparing it, for the comparison to have any chance of
Thank you for explanation.
> Given your other message mentioning a doclet, you are effectively
> asking to be able to compile fragments of code (i.e. strings) in the
> context of your doclet, and that is not possible with the existing
> public API.
Although it's bad news to me, it saves my time from continuing work in
this direction. :-)
I will try to find some workaround solve the issue.
> -- Jon
> On 03/21/2017 02:28 PM, Jonathan Gibbons wrote:
>> Use Element.asType() to move from the Element world to the TypeMirror
>> Use Types.asElement(TypeMirror) to go in the reverse direction, from
>> a TypeMirror to an Element.
>> 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:
>>> ( 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
>>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the compiler-dev