用其他解决方案替换New?

时间:2010-10-25 14:20:04

标签: java

我的AIR 2.0 Native进程遇到了很多麻烦,我尝试从AIR应用程序启动Java,然后Java.exe终止自身在Windows任务管理器中,我发现new MidiTest()是由此造成的。新实例是否有更好的解决方案?

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

2 个答案:

答案 0 :(得分:0)

不,创建类的新实例的唯一其他选项是使用反射,这是一个比new更加模糊和容易出错的选择。除非确实需要,否则不应该使用它。甚至那就是加载类并最终调用对象的构造函数,与new完全相同。

我怀疑问题出现在您未向我们展示的代码中。 MidiTest是否有任何(static或非静态)初始化程序块?那个println()语句真的是它构造函数中唯一的代码吗?

当然,如果您追查导致终止的确切错误/异常以及它究竟源自何处,它会有所帮助: - )

答案 1 :(得分:0)

除了新功能之外别无选择。

这是实例化对象的唯一方法。即使你使用反射,你仍然在调用构造函数。您需要追踪问题。找到引起的确切异常,以及确切的行号,然后看看您需要做些什么来解决这个问题。

我可以看到您没有提供代码的完整副本。在近距离大括号之前有一个公开评论,这是不对的。这意味着我们无法再帮助您了解我们的信息。