[英]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.