【发布时间】:2013-11-07 22:35:42
【问题描述】:
在 Java DOM/AST (http://help.eclipse.org/indigo/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/dom/package-tree.html) 中,为什么 Initializer 包含块,为什么 MethodInvocation 是表达式而不是语句?
我的意思是,给定代码
int a = Integer.parseInt("1");
ASTView 插件只显示 INITIALIZER > MethodInvocation
有没有真正具有 Block 元素的 Initializer?
另外,如果我有这样的方法
public void thisMethod(){
System.out.println();
}
MethodInvocation 被包装到一个 ExpressionStatement 中。但是为什么 MethodInvocation 不是一个声明呢?一个简单的 System.out.println() 就是一个有效的“声明”。 Java DOM/AST 意义上的表达式缺乏代表自身的能力。
也许我只是没有完全理解表达式和语句之间的分离。
【问题讨论】:
-
这个“RTFM”对我没有帮助,抱歉。而且,它没有回答第一个问题
-
嗯,你了解表达式和语句的概念吗?如果不是,那么询问特定实现的推理是没有意义的。关于你的第一个问题,“为什么初始化器包含块”——我不明白,如果不是块,初始化器还应该包含什么?
-
您的链接有助于清除?不,它没有。表达式不能代表自己,语句可以。但是 MethodInvocation 可以代表它自己! “如果不是块”:单个表达式
-
但是方法调用可以返回一个值,因此在允许表达式的地方是允许的。方法调用适合 both 表达式 and 语句。这就是表达式语句的重点,是的,链接解释了它。但你必须阅读的不仅仅是锚点上的几句话。
标签: java dom abstract-syntax-tree eclipse-jdt