Intellij Idea this和this有什么区别?

7cjasjjr  于 2023-10-15  发布在  其他
关注(0)|答案(3)|浏览(104)
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
  }

我还没见过这种形式的。有谁能把引用链接到文档中或者解释一下通常形式和括号中的区别吗?

sdnqo3pr

sdnqo3pr1#

无论如何都没有区别。在您的示例中不需要这些大括号,应该将其删除。
显然,它也绊倒了IntelliJ的递归检测。这只是该特性中的一个小错误,并不意味着代码的工作方式不同。

9ceoxa92

9ceoxa922#

根据语言规范:
带括号的表达式是主表达式,其类型是所包含表达式的类型,其值在运行时是所包含表达式的值。如果包含的表达式表示一个变量,那么带括号的表达式也表示该变量。
由于this是包含的表达式,因此(this)this具有相同的类型和值。
但是,this不是变量,所以最后一部分不适用(不能写(this) = ...this = ...,但可以写(a) = ...作为a = ...的等价物)。

yi0zb3m4

yi0zb3m43#

这两者之间没有区别。

相关问题