Java中的语法树结构

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中的语法树结构的更多相关文章
- Java初认识--Java中的语法结构
Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...
- Java 中的语法糖
百度百科对语法糖的定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这 ...
- [转]谈谈Java中的语法糖
*该博客转自 http://blog.csdn.net/danchu/article/details/54986442 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某 ...
- JVM(二):Java中的语法糖
JVM(二):Java中的语法糖 上文讲到在语义分析中会对Java中的语法糖进行解糖操作,因此本文就主要讲述一下Java中有哪些语法糖,每个语法糖在解糖过后的原始代码,以及这些语法糖背后的逻辑. 语法 ...
- 浅析java中的语法糖
概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...
- 【Java基础】Java中的语法糖
目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...
- Java 中的语法糖(7/15整个周六上午总结)
语法糖定义指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会:但是这种语法对语言的功能并没有影响.Java中的泛型,变长参数,自动 ...
- Java 中的语法糖,真甜。
我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱 ...
- Java中的语法糖
一.范型 1. C#和Java范型的区别 在C#中范型是切实存在的,List<int>和List<String>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类 ...
随机推荐
- java.util.concurrent.locks.LockSupport (讲得比较细)
转自: https://my.oschina.net/readjava/blog/282882 摘要: 要学习JAVA中是如何实现线程间的锁,就得从LockSupport这个类先说起,因为这个 ...
- eclipse mac
在mac下安装eclipse,挺简单的.只是字体会发虚,有点麻烦. 安装完成后,双击eclipse图标,显示包内容,contents--info.plist,在</dist>前加<k ...
- FORM 错误:此责任无可用函数。 更改责任或与您的系统管理员联系。
错误:此责任无可用函数. 更改责任或与您的系统管理员联系. 2014-07-02 12:20:47 分类: Oracle Symptom 访问Help->Diagnostics->Exam ...
- 自我介绍及如何注册GITHUB
自我介绍 我是来自南通大学网络工程141班的周楠,我的学号是1413042014,我的兴趣是喜欢玩游戏(如果这算是一个兴趣爱好的话),喜欢尝试各种游戏. 如何注册一个GitHub账号? 1.首先我们需 ...
- Lucene之模糊、精确、匹配、范围、多条件查询
Lucene的查询方式很 丰富,对于数值类型的数据,采取TermRangeQuery的方式,对于String类型的,就可以采取TermQuery等,查询方式了,可以通过采取合适的查询方式,检索到数据. ...
- day14(带参装饰器,迭代器,生成器,枚举对象)
一,复习 ''' 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 ...
- ASP.NET系列:自定义配置节点的复用
appSettings太简单,为每个程序自定义配置节点太复杂,因此要解决app.config&web.config自定义配置的复用问题. 1.读取不依赖SectionName,根节点可以定义为 ...
- String调用Array相关方法——有点古怪
这个系列的前面几篇文章中有谈到在一个Object上使用apply.call等方法操作另一个Object的方法,今天我们来学习怎么样在String上调用Array相关方法. 在许多方面,字符串表现的好像 ...
- windows服务安装记录
首先打开cmd. 进入这个地址 C:\Windows\Microsoft.NET\Framework\v4.0.30319 执行操作 InstallUtil.exe E:\QueueWinServi ...
- WEB文本框提示
<input type="text" placeholder="文本框提示语" name="version_no"/>