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>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类 ...
随机推荐
- Layout布局源码浅析之——FrameLayout
一直想研究下安卓各种布局控件,FrameLayout是安卓最简单的界面布局,所以就从FrameLayout讲起. 1.属性.frameLayout继承ViewGroup,除了拥有ViewGroup的属 ...
- Computer
Computer 1. Ctrl+N .根据惯例,“Control”.“Shift” 以及 “Alternate” 按键将以 Ctrl.Shift 以及 Alt 来表示,需要特别指出的是,其中第一个按 ...
- oracle 批量删除触发器
--生成删除触发器的语句 select 'drop trigger "'||trigger_name||'";' from all_triggers where TRIGGER_ ...
- SparkSQL大数据实战:揭开Join的神秘面纱
本文来自 网易云社区 . Join操作是数据库和大数据计算中的高级特性,大多数场景都需要进行复杂的Join操作,本文从原理层面介绍了SparkSQL支持的常见Join算法及其适用场景. Join背景介 ...
- spring的父子上下文容器及配置
本文由作者张远道授权网易云社区发布. spring父子容器 spring总的上下文容器有父子之分.父容器和子容器.父容器对子容器可见,子容器对父容器不可见. 对于传统的spring mvc来说,spr ...
- 2018-2019-2 网络对抗技术 20165219 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165219 Exp3 免杀原理与实践 实验任务 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用sh ...
- telnet 工具
关于 telnet 命令 telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标 ...
- AtcoderExaWizards 2019题解
传送门 \(A\ Regular\ Triangle\) 咕咕 \(B\ Red\ or\ Blue\) 咕咕咕 \(C\ Snuke\ the\ Wizard\) 我可能脑子真的坏掉了-- 容易发现 ...
- ROS(URDF机器人建模)
新建功能包mbot_description 在功能包下新建文件config,launch,meshes,urdf. 在launch文件夹下新建文件display_mbot_base_urdf.laun ...
- 现在就启用 HTTPS,免费的!
现在就启用 HTTPS,免费的! 现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什 ...