Java 类内的调用方法

Java 类内的调用方法,java,multithreading,methods,Java,Multithreading,Methods,问候 我正在用java开发我的第一个应用程序,我想知道如何才能做到以下几点 我创造了这个 public class Test { ... public void control() { final ArrayList<Module> mods = new ArrayList<Module>(); if (i == 0) { mods.add( null

问候

我正在用java开发我的第一个应用程序,我想知道如何才能做到以下几点

我创造了这个

public class Test
{
     ...

     public void control()
     {
          final ArrayList<Module> mods = new ArrayList<Module>();
          if (i == 0)
          {
               mods.add( null );
               mods.add(moduleList.get( i ));
               Thread t = new Thread( new Runnable()
               {
                    public void run()
                    {
                         StartController(mods);
                    }             
               });     
          }
     }

     public void StartController(ArrayList<Module> modList)
     {
          //Do Stuff
     }
}
公共类测试
{
...
公共无效控制()
{
最终ArrayList mods=新ArrayList();
如果(i==0)
{
mods.add(空);
mods.add(moduleList.get(i));
线程t=新线程(新的可运行线程()
{
公开募捐
{
起动控制器(mods);
}             
});     
}
}
公共无效StartController(ArrayList modList)
{
//做事
}
}
但我无法做到这一点!他找不到星控


我想保持代码接近这一点。有没有办法做到这一点?

看起来100%正确,但在这种类型的呼叫不起作用的情况下,通常的解决方案是:

Test.this.StartController(mods)
而不是

StartController(mods)

尝试改用ExecutorService和Runnable接口。您可以在此处看到一个简单的示例:


另一种选择是使StartController(..)方法保持静态

public static void StartController(ArrayList<Module> mods) {
  // do stuff
}

实际上,如图所示,这应该可以正常工作。您的实际代码在某些方面必须与此不同。最好以小写字母开头mentods名称。在多单词名称中,第二个和后面的每个单词的第一个字母都应该大写。i、 公共无效startController(ArrayList modList)更多信息。。。欧内斯特:我相信你是对的,可能是因为IDE有问题。。。。它起作用了!
Test.StartController(mods);