我正在使用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())获取空指针。任何帮助,将不胜感激。 感谢
答案 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
。