2010-10-25 4 views
-2

Ce code a beaucoup de problèmes pour mon processus natif AIR 2.0 que j'ai essayé de lancer Java à partir de l'application AIR, puis le Java.exe se terminent dans le Gestionnaire des tâches de Windows, j'ai trouvé que new MidiTest() a causé. Y a-t-il une meilleure solution pour une nouvelle instance?Remplacer Nouveau par une autre solution?

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"); 
    // /* 
} 

Répondre

0

Non, la seule autre option pour créer une nouvelle instance de votre classe serait d'utiliser la réflexion, ce qui est un choix beaucoup plus sujettes obscure et erreur que new. Il ne devrait pas être utilisé à moins d'en avoir vraiment besoin. Et même cela charge la classe et appelle le constructeur de l'objet à la fin, exactement de la même manière que new.

Je suppose que le problème se situe quelque part dans le code que vous ne nous avez pas montré. Est-ce que MidiTest a des blocs d'initialisation (static ou non)? Cette instruction println() est-elle vraiment le seul code de son constructeur?

Bien sûr, il a aidé si vous avez tracé vers le bas ce qui est l'erreur exacte/exception entraînant la résiliation et où elle exactement :-) proviennent de

0

Il n'y a pas d'alternative à nouveau.

C'est le seul moyen d'instancier un objet. Même si vous utilisez la réflexion, vous appelez toujours le constructeur. Vous devez localiser le problème. Trouvez l'exception exacte provoquée et le numéro de ligne exact, puis voyez ce que vous devez faire pour résoudre ce problème.

Je constate que vous n'avez pas fourni une copie complète de votre code. Il y a un commentaire ouvert avant l'accolade, et ce n'est pas correct. Cela signifie que nous ne pouvons pas vous aider davantage avec les informations dont nous disposons.

Questions connexes