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的树节点如下:

												

Java中的语法树结构的更多相关文章

  1. Java初认识--Java中的语法结构

    Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...

  2. Java 中的语法糖

    百度百科对语法糖的定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这 ...

  3. [转]谈谈Java中的语法糖

    *该博客转自 http://blog.csdn.net/danchu/article/details/54986442 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某 ...

  4. JVM(二):Java中的语法糖

    JVM(二):Java中的语法糖 上文讲到在语义分析中会对Java中的语法糖进行解糖操作,因此本文就主要讲述一下Java中有哪些语法糖,每个语法糖在解糖过后的原始代码,以及这些语法糖背后的逻辑. 语法 ...

  5. 浅析java中的语法糖

    概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...

  6. 【Java基础】Java中的语法糖

    目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...

  7. Java 中的语法糖(7/15整个周六上午总结)

    语法糖定义指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会:但是这种语法对语言的功能并没有影响.Java中的泛型,变长参数,自动 ...

  8. Java 中的语法糖,真甜。

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱 ...

  9. Java中的语法糖

    一.范型 1. C#和Java范型的区别 在C#中范型是切实存在的,List<int>和List<String>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类 ...

随机推荐

  1. Android-应用安装/替换/卸载/广播监听

    在上一篇博客Android-开关机的广播,中介绍了,如何订阅接收者,去接收系统发送的开机/关机广播, 而这篇博客是订阅接收者 去接收应用的(安装/替换/卸载) 三种广播 订阅 接收者 去接收 应用的 ...

  2. redis分布式集群3种架构方案

    集群方案: 1. 主从高可用(该方案就是单实例形式,只是为了保证数据的安全,对于用户数据少,业务的前期可以采用,目前我司缓存架构就是采用该方案) 2. 客户端分片(典型代表:Jedis.自主写分片算法 ...

  3. HTML5和App之争论

    2013了,移动互联网火了几年,我们也看清了原生App的真面目,App很多很好,但是盈利很难,这时我们不得不把目光重新转向HTML5. 简单地说,HTML5是一个新技术,可以让开发者基于Web开发的A ...

  4. Creative Cloud 应用程序 | 直接下载

    https://helpx.adobe.com/cn/download-install/kb/creative-cloud-apps-download.html

  5. WinRT支持GB2312

    在SL年代,有第三方类库支持 http://encoding4silverlight.codeplex.com 在RT版本有点不兼容,一直没时间看.今天闲的卵疼,就来一段代码兼容一下RT版本,迟点整合 ...

  6. Android studio 报错 installation failed with message failed to finalize session:INSTALL_FAILED_INVALID_APK 解决方法

    解决方案: File->Setting->Build->Instant Run

  7. C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件)

    string file =Application.StartupPath+@"\WinFrm_Main.exe";//运行程序位置 public Form1() { Initial ...

  8. 【12c OCP】最新CUUG OCP-071考试题库(52题)

    52.(12-11) choose the best answer: Examine the structure and data in the PRICE_LIST table: You plan ...

  9. static修饰的方法不能被重写可以被继承

    今天我们谈谈为什么抽象类中不能有静态的抽象方法以及static修饰的方法不能被重写可以被继承 1 static修饰的方法不能被重写可以被继承我们知道static修饰的方法为静态方法,可以直接使用类名. ...

  10. BZOJ3786: 星系探索(伪ETT)

    题面 传送门 题解 坑啊--我好像把\(Splay\)的东西全忘光了-- \(ETT\)(\(Euler\ Tour\ Tree\))是一种可以资瓷比\(LCT\)更多功能的数据结构,然而不管是功能还 ...