加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中的语法树结构

发布时间:2020-12-15 07:59:20 所属栏目:Java 来源:网络整理
导读:? 1、JCTypeParameter 1 class ? BT extends CAIAIB { ...} 截图如下: ? 接口继承了StatementTree接口,而实现类实现了JCStatement类,不过有一个例外,如: CaseTree 实现了JCStatement,但接口JCCase是继承了Tree。? ? 1、JCContinue 语法树结构举例如下

?

1、JCTypeParameter

1
class? B<T extends CA&IA&IB> { ...}

截图如下:  

?

接口继承了StatementTree接口,而实现类实现了JCStatement类,不过有一个例外,如:

CaseTree 实现了JCStatement,但接口JCCase是继承了Tree。?

?

1、JCContinue

语法树结构举例如下:?

1
2
3
4
stop:? while? ( get ()) {
???????????? a = 3;
???????????? continue? stop;
}

截图如下:

?

2、JCEnhancedForLoop

语法树结构举例如下:

1
2
3
4
String[] strArray =? null ;
for (String a:strArray){
??????????? System.out.println(a);
}

截图如下:  

?

3、JCSwitch

语法树结构如下:?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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再举一个例子,如下:

1
2
3
4
5
6
7
8
9
10
11
switch? (c) {
case? 1:
???? int? aaa = 1;
???? int? bbb = 2;
case? 2:
???? aaa = 2;
default : {
?
}
???? bbb = 4;
}  

语法树截取后图如下所示.

?

?

接口实现了ExpressionTree,而实现类实现了JCExpression,如下:

?

1、LetExpression

语法树结构如下:?

1
2
Integer foo = 0;
foo++;

截图如下:

?

?

2、JCAnnotation

语法树结构如下:?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.test11;
?
public? class? Test1 {
?
???? @MzTargetPackage(isCanNull = true ,
???????????? num=100,
???????????? version =? "1.1.0" ,
???????????? fruitColor=MzTargetPackage.Color.BULE,
???????????? value={ "a," , "b" , "c" },
???????????? [email?protected](author =? "closedevice" ,date= "20161225" )
???? )
???? private? void? process() {
?
???? }
}

如下截图:

3、JCNewArray

语法树结构如下:?

1
2
3
4
5
private? void? process() {
??????? int [] a =? new? int [2];
??????? int [] b =? new? int []{};
??????? int [] c = {1,2,3};
??? }

如下截图:

?

JCNewClass的语法树结构如下:

1
2
3
4
5
6
7
class? Outer<T>{
???? class? Inner<D>{
???????? public? <X> Inner(String a,Integer ...ems){
?????????????
???????? }
???? }
}

?

1
2
3
4
5
new? Outer<String>(). new? <Number>Inner<Integer>( "arg" ,1,3){
???????????? public? void? m1(){
?????????????????
???????????? }
};

?

实例类与类声明时的两个值不太一样。

下面来看JCNewClass的语法结构,如下截图。

  

  

?

?

4、JCMethodInvocation

语法结构举个例子,如下:?

1
2
3
4
5
6
7
8
9
10
11
12
13
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,如下:

1
2
3
4
5
6
7
8
/**
????? * A parameterized type,T<...>
????? */
???? public? static? class? JCTypeApply? extends? JCExpression? implements? ParameterizedTypeTree {
???????? public? JCExpression clazz;
???????? public? List<JCExpression> arguments;
???????? // ...
}?

?

5、JCTypeApply

语法结构举个例子,如下: ?

1
2
3
4
5
class? X<T1? extends? InputStream,T2>{
???? public? void? test(){
???????? X<FileInputStream,?> x =? null ;
???? }
}  

如果截图展示了语法树结构:

?

6、JCWildcard

?

7、JCInstanceOf

举个例子,如下:

1
2
Object o =? null ;
if? (o instanceof A){}  
截图如下:

?

8、JCPrimitiveTypeTree

?当为 Object? o = int.class.toString();

?

9、JCUnary

如++a的树节点如下:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读