JavaHT Conversions TreesElementsTypes

Conversions between trees and elements and types...

Sometimes you need to go from element to a tree, or from a type to an element and vice versa.

  • Going from a Tree to an Element use com.sun.source.util.Trees.getElement( TreePath ). Notice that you lose all the type information in case the class/method uses generics so you may be interested in instead using a Type rather than an Element.
  • Going from a Tree to a Type use com.sun.source.util.Trees.getType( TreePath )
  • Going from an Element to a Tree use one of the ( com.sun.source.util.Trees.getTree( ... ) methods.
  • Going from an Element to a Type is easy; what you need to do is to call the asType() method on the Element.
  • Going from a Type to an Element you can do this with DeclaredType instances by calling their asElement() method

PITFALL Methods for going from a Tree to an Element or a Type require TreePath

It is not enough to send the Tree as a parameter. There are basically several ways how to get a TreePath:

  1. If you know the CompilationUnit call com.sun.source.util.Trees.getPath( CompilationUnitTree, Tree )
  2. If you know the Element you can call com.sun.source.util.Trees.getPath( Element )
  3. If you are going through the tree using a visitor or scanner you may rather want to subclass the com.sun.source.util.TreePathScanner class which will permit for getting the current path at any time using it's getCurrentPath() method.
Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo