public class classA implements interfaceA {
@Override
public Optional<T> methodA(String s) {
return (this).methodA(s); // <- IDEA doesn't underlines as recursion
}
@Override
public Optional<T> methodB(String s) {
return (this).methodB(s); // <- IDEA doesn't underlines as recursion
}
public class classA implements interfaceA {
@Override
public Optional<T> methodA(String s) {
return this.methodA(s); // <- IDEA underlines as recursion
}
@Override
public Optional<T> methodB(String s) {
return this.methodB(s); // <- IDEA underlines as recursion
}
我还没见过这种形式的。有谁能把引用链接到文档中或者解释一下通常形式和括号中的区别吗?
3条答案
按热度按时间sdnqo3pr1#
无论如何都没有区别。在您的示例中不需要这些大括号,应该将其删除。
显然,它也绊倒了IntelliJ的递归检测。这只是该特性中的一个小错误,并不意味着代码的工作方式不同。
9ceoxa922#
根据语言规范:
带括号的表达式是主表达式,其类型是所包含表达式的类型,其值在运行时是所包含表达式的值。如果包含的表达式表示一个变量,那么带括号的表达式也表示该变量。
由于
this
是包含的表达式,因此(this)
与this
具有相同的类型和值。但是,
this
不是变量,所以最后一部分不适用(不能写(this) = ...
或this = ...
,但可以写(a) = ...
作为a = ...
的等价物)。yi0zb3m43#
这两者之间没有区别。