![](/img/trans.png)
[英]If a method returns an anonymous class, is it returning a subclass or an inner class?
[英]Netbeans fails to find main class when creating anonymous subclass of inner class of anonymous subclass
當我嘗試在其包含類的包含類的匿名子類的初始化中創建一個新的匿名Action子類時,Netbeans在運行時突然找不到主類,盡管能夠進行清理+構建沒有問題,並且可以與此運行代碼已注釋掉。
代碼結構:
主包裝:
在一個簡單的類中復制:
package tests;
public class ClassTester {
public static void main(String[] args) {
ClassTester tester = new ClassTester();
tester.run();
}
public void run() {
final Inner1 A = new Inner1() {
{
B = this.new Inner2() {
@Override
public void run() {
System.out.println("Hello, world!");
}
};
}
};
A.B.run();
}
public class Inner1 {
public Inner2 B;
public abstract class Inner2 implements Runnable {
}
}
}
-->
Error: Could not find or load main class tests.ClassTester
Java Result: 1
有趣的是,-XX:+ PrintCompilation揭示了崩潰之前運行的某些內容:
50 1 java.lang.String::hashCode (55 bytes)
50 2 java.lang.String::charAt (29 bytes)
Error: Could not find or load main class tests.ClassTester
Java Result: 1
產品版本:NetBeans IDE 7.3.1(Build 201306052037)Java:1.7.0_25; Java HotSpot(TM)64位服務器VM 23.25-b01運行時:Java(TM)SE Runtime Environment 1.7.0_25-b17系統:在amd64上運行的Windows 7版本6.1; cp1252; zh_(nb)
清理,構建和重新啟動Netbeans尚未解決問題。 這是可修復的還是Netbeans中的錯誤?
我能夠在NetBeans 7.3.1中重現該問題。 該問題似乎與Bug#224770有關 。 修復摘要為#224770:使帶有封閉表達式的new處理更類似於vanilla javac,同時保留API的正確輸出。
您有兩個選擇。
繼續使用NetBeans 7.3,不要使用“ this.new”。 將第11行更改為:
B =新的Inner2(){
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.