簡體   English   中英

引用一個匿名類?

[英]Reference an anonymous class?

我正在為RCP應用程序開發一個插件。 plugin.xml ,我需要在給定的擴展點注冊某些類。 其中一個類是一個匿名(?)類,定義如下:

package de.me.mypackage;

import org.something.AnotherClass;

public class ClassOne {
  ...
  public static AnotherClass<ClassOne> getThat() {
    return new AnotherClass<ClassOne>() {
      ...
    };
  }

}

有沒有辦法在plugin.xml中引用AnotherClass<ClassOne>

我已經嘗試了類似de.me.mypackage.ClassOne$AnotherClass東西,但這不起作用。 我是否必須在自己的文件中聲明該類才能引用它?

據我所知,它會有一個數字索引:

class Bla {
  public static void main(String[] args) {
    (new Runnable() {
      public void run() {
        System.out.println(getClass().getName()); // prints Bla$1
      }
    }).run();
  }
}

編譯完成后,您會得到:

$ ls *.class
Bla$1.class Bla.class

也就是說,如果修改源文件,則不能依賴編號。

您可以改為定義static內部類,例如:

public class ClassOne {

  public static class MyClass extends AnotherClass<ClassOne> {
    public MyClass(/* arguments you would pass in getThat()? */) {
      ...
    }
    ...
  }

  public static AnotherClass<ClassOne> getThat() {
    return new MyClass(...);
  }
}

我需要在這里說明顯的 - 如果你想引用它,你應該把它變成一個命名類。 你是否可以訪問它是技術上的好奇心(我不知道答案),而不是你應該在生產中實際做的事情。

美元符號只在類的二進制名稱中起作用; 在Java源代碼中,只需使用de.me.mypackage.ClassOne.AnotherClass.class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM