1
 MohrAboutBox.1 local1 = new ActionListener() {

JD GUI 0.3.3 で jar ファイルを逆コンパイルしたところ、意味をなさないこの行が表示されました。".1" (ドット 1) は何を参照していますか? 再コンパイルしようとしましたが、javac コンパイラからエラーが発生しました。その行のステートメントではないと言われています。私は何をすべきか ?「.1」を削除するか、代わりに「this」、または変数、クラス、またはメソッドを配置する必要があると思います.JDがその仕事をできない理由がわかりません。

class MohrAboutBox extends JDialog
{
  public MohrAboutBox(MohrControls paramMohrControls)
  {

    MohrAboutBox.1 local1 = new ActionListener() {
      public void actionPerformed(ActionEvent paramActionEvent) {
        MohrAboutBox.this.exit_dlg();
      }
    };
4

2 に答える 2

3

これは、これが囲まれた(匿名の)クラス(実装 ActionListener)のインスタンスであるという事実を指しますMohrAboutBox。たとえばMohrAboutBox $1、次のように変更します。

ActionListener listener = new ActionListener() {
    public void actionPerformed(ActionEvent paramActionEvent) {
        MohrAboutBox.this.exit_dlg();
    }
};
于 2012-07-17T19:02:05.257 に答える
2

元のソースでは匿名の内部クラスでした。有効なJava名のないクラス。Javaコンパイラは、結果のクラスファイルClassName$1に名前を付けますClassName$2。逆コンパイラがそれ自体でこれを解決できない理由は不明です。内部クラスが拡張される実際のクラスの名前(つまり、ActionListenerこの場合は)を指定する必要があります。そうすると、コードは正常にコンパイルされます。

于 2012-07-17T19:02:19.640 に答える