1、JCTypeParameter
class B<T extends CA&IA&IB> { ...}
截图如下:
接口继承了StatementTree接口,而实现类实现了JCStatement类,不过有一个例外,如:
CaseTree 实现了JCStatement,但接口JCCase是继承了Tree。
1、JCContinue
语法树结构举例如下:
stop: while (get()) { a = 3; continue stop; }
截图如下:
2、JCEnhancedForLoop
语法树结构举例如下:
String[] strArray = null; for(String a:strArray){ System.out.println(a); }
截图如下:
3、JCSwitch
语法树结构如下:
static enum E { A, B } public static void main(String args[]) { E e = E.B; switch (e) { case A: System.out.println("A"); break; case B: System.out.println("B"); default: System.out.println(0); } }
如下截图:
关于JCSwitch再举一个例子,如下:
switch (c) { case 1: int aaa = 1; int bbb = 2; case 2: aaa = 2; default: { } bbb = 4; }
语法树截取后图如下所示.
接口实现了ExpressionTree,而实现类实现了JCExpression,如下:
1、LetExpression
语法树结构如下:
Integer foo = 0; foo++;
截图如下:
2、JCAnnotation
语法树结构如下:
package com.test11; public class Test1 { @MzTargetPackage(isCanNull =true, num=100, version = "1.1.0", fruitColor=MzTargetPackage.Color.BULE, value={"a,","b","c"}, compoundTest=@Code(author = "closedevice",date="20161225") ) private void process() { } }
如下截图:
3、JCNewArray
语法树结构如下:
private void process() { int[] a = new int[2]; int[] b = new int[]{}; int[] c = {1,2,3}; }
如下截图:
JCNewClass的语法树结构如下:
class Outer<T>{ class Inner<D>{ public <X> Inner(String a,Integer ...ems){ } } }
new Outer<String>().new <Number>Inner<Integer>("arg",1,2,3){ public void m1(){ } };
实例类与类声明时的两个值不太一样。
下面来看JCNewClass的语法结构,如下截图。
4、JCMethodInvocation
语法结构举个例子,如下:
class Father { public <T> void m1(int a) { } } public class Test3 extends Father { class C { public void m() { Test3.super.<String>m1(1); } } }
查看调用方法m1()的语法结构如下:
接口实现了ParameterizedTypeTree,而实现类实现了JCExpression,如下:
/** * A parameterized type, T<...> */ public static class JCTypeApply extends JCExpression implements ParameterizedTypeTree { public JCExpression clazz; public List<JCExpression> arguments; // ... }
5、JCTypeApply
语法结构举个例子,如下:
class X<T1 extends InputStream,T2>{ public void test(){ X<FileInputStream,?> x = null; } }
如果截图展示了语法树结构:
6、JCWildcard
7、JCInstanceOf
举个例子,如下:
Object o = null; if (o instanceof A){}
截图如下:
8、JCPrimitiveTypeTree
当为 Object o = int.class.toString();
9、JCUnary
如++a的树节点如下: