使用MVC中的线程从内部类调用外部类

时间:2011-05-03 02:26:07

标签: java model-view-controller inner-classes

我正在使用MVC模型并尝试在控制器中创建一个线程。当我在内部类run()时,我需要获得正确的模型,但它抛出一个空指针。

以下是从外部控制器创建内部类和线程的代码:

Thread thread = new Thread(new runWithThread(OpsSec, AmToChange, AgentID, balance, currency, selected_account_obj));
thread.start();

在runWithThread内部,我尝试获取正确的模型。 AMModel是Model类,withdraw是其中的一个方法。 getModel在我正在扩展的抽象控制器中定义(实现继承)。

((AMModel)getModel()).withdraw(10, "USD");

它适用于外部类,但不适用于内部类,我不知道为什么我使用((AMModel)getModel())获取空指针。任何帮助,将不胜感激。 感谢

2 个答案:

答案 0 :(得分:1)

我意识到错误。我在控制器外部类和runWithThread内部类中都“扩展了AbstractController”。我正在使用Rational Arch,它没有标记任何内容,所以我没有注意到错误。

答案 1 :(得分:0)

我知道这已经过时了,但请尝试AMModel.this.withdraw(10, "USD");。这是一个通用的例子:

class Outer
{
    class Inner
    {
        public void test()
        {
            Outer.this.variable = 1;
        }
    }
    public int variable = 0;
    private Inner inner;
}

致电inner.test()后,variable将为1