pet*_*bel 5 java methods grammar this invoke
我对 Java (6/7/8) 语法有一个愚蠢的问题 - 这两个方法调用片段总是等效的吗?
和this
this.myMethod(4);
Run Code Online (Sandbox Code Playgroud)没有this
myMethod(4);
Run Code Online (Sandbox Code Playgroud)注意:当然,问题是关于参数的每个数字、类型和组合
较弱的语句:给定程序P,我可以仅通过在每个方法调用前面P'删除来创建程序吗?this.
我考虑了本地类、匿名类、内部类和各种继承,但没有发现任何矛盾。所以我相信这两个片段实际上是相同的。不幸的是我无法找到任何合适的证明(例如来自官方语法)。
你能通过反证证明我错了,或者给我一些构建等价证明的线索吗?多谢。
编辑:等价被证明是错误的(见下面的评论)那较弱的陈述呢?
Java语言规范指出
\n\n\n\n\n\n
\n- 如果形式是
\nMethodName- 即只是一个Identifier- 则: \n\n
- 否则,令
\nT为该方法所属的封闭类型声明,并令 n 为一个整数,该整数是其声明T立即包含该方法调用的类的第 n 个词法封闭类型声明。目标引用是 的第 n 个词法封闭实例this。
和
\n\n\n\n\n当用作主要表达式时,关键字
\nthis表示一个值\n,该值是对调用其实例方法或\n 默认方法的对象的引用 (\xc2\xa715.12),或对正在构造的对象\n 的引用
和
\n\n\n\n\n\n
\n- 如果涉及到表单
\nPrimary . [TypeArguments] Identifier,则:\n\n
- 否则,将计算 Primary 表达式并将结果用作目标引用。
\n
Primary这里指的是this.*.
在这两种情况下,该方法都将解析为相同的方法。\n鉴于所有这些信息,没有可以P\'从可编译程序创建的可编译程序P。
| 归档时间: |
|
| 查看次数: |
2753 次 |
| 最近记录: |