java Intellij内联创建额外对象

6pp0gazn  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(98)

假设我有

void setup() {
    var call = new DirectTransactCall();
    call.setRequestId("3fa85f64-5711-4562-b3fc-2c963f61afa6");
    expected = call;
  }

我要求Intellij 2023.2.2内联调用变量

void setup() {
    new DirectTransactCall().setRequestId("3fa85f64-5711-4562-b3fc-2c963f61afa6");
    expected = new DirectTransactCall();
  }

哪里

@Override
  public void setRequestId(String id) {
    this.requestId = id;
  }

为什么新代码生成2个对象而不是1个,为什么没有为分配给expected的对象设置requestId?
我的假设是,内联一个变量不应该改变代码的行为。

更新

我预计

void setup() {
    expected = new DirectTransactCall();
    expected.setRequestId("3fa85f64-5711-4562-b3fc-2c963f61afa6")
  }

expected示例变量(不是final)引用的DirectTransactCall对象与前面一样正确设置了requestId。

ma8fv8wu

ma8fv8wu1#

这正是它应该做的这里的解决方案很简单,就是不内联变量。我不知道你还能期待什么。

相关问题