2010-10-25 166 views
-2

此代碼對於我嘗試從AIR應用程序啓動Java的AIR 2.0本機進程有很多麻煩,然後Java.exe在Windows任務管理器中自行終止,我發現引起了new MidiTest()。新的實例有更好的解決方案嗎?用其他解決方案替換New?

public static void main(String[] arg) { 
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    while (!(speed.equals(speed_stop))) { 
    try { 
     speed = in.readLine(); 
     if(!(Global.newPlayer.equals("1"))){new MidiTest();} 
    } catch (IOException e) { 
     System.err.println("Exception while reading the input. " + e); 
    } 
    } 
} 
private MidiPlayer player; 

public MidiTest() { 
    System.out.println("Start player"); 
    // /* 
} 

回答

0

沒有,唯一的選擇創建類的新實例將使用反射,這是一個更模糊和容易出錯的選擇,而不是new。除非真的需要,否則不應使用它。即使是這樣,加載類並最終調用對象的構造函數,與new完全相同。

我懷疑問題出在你沒有向我們顯示的代碼中。 MidiTest是否有任何(static或非靜態)初始化塊?那println()聲明真的是它的構造函數中唯一的代碼嗎?

當然,它幫助你跟蹤下來什麼是確切的錯誤/異常導致終止和確切位置,它與:-)

0

沒有替代品的新來源。

這是實例化對象的唯一方法。即使你使用反射,你仍然在調用構造函數。你需要找出問題所在。找到引起的確切例外情況,確切的行號,然後看看你需要做些什麼來解決這個問題。

我可以看到您沒有提供完整的代碼副本。在大括號之前有一個公開的評論,這是不對的。這意味着我們無法幫助您進一步瞭解我們的信息。

相關問題