読者です 読者をやめる 読者になる 読者になる

日々精進

新しく学んだことを書き留めていきます

IntelliJでJava開発中にdebug windowで見られない変数がある

ライブラリのコードをデコンパイルしたコードの中に以下のようなコードがあり、変数eの中身が見られなかった。

        CsdlEntityContainerInfo e = this.provider.getEntityContainerInfo(containerName);
        return e != null?new EdmEntityContainerImpl(this, this.provider, e):null;

原因はコンパイラによって最適化されたため、元のコードと変数名が違っていることだった。 コンパイル前のコードは以下のようになっていた。

  CsdlEntityContainerInfo entityContainerInfo = provider.getEntityContainerInfo(containerName);
  if (entityContainerInfo != null) {
    return new EdmEntityContainerImpl(this, provider, entityContainerInfo);
  }

entityContainerInfoがeに変更されているとは。。entityContainerInfoならローカル変数の一覧に出ていた。 妙にスペースが少ないコードがあったら要注意だな。