2015-07-13 94 views
2

我一直在努力解决这个问题一段时间了,所以我来到这里与大家分享。 首先我有一个类至极我想注入的对象:@inject似乎不起作用NPE

public class MyClass { 
@javax.inject.Inject 
private MyInterface interface 
     /.../ 
public void myMethod(){ 
interface.doTask(); 
} 

的MyInterface的:

public interface MyInterface { 

    public abstract void doTask() throws Exception; 
} 

是一个接口至极我绑定到其实现:

public class MyInterfaceImpl implements MyInterface{ 
    @Inject 
    public MyInterfaceImpl(...) { 
     /.../ 
    } 
    @Override 
    public void doTask() throws Exception{ 
     /.../ 
} 

在配置:

public class ApplicationConfig extends ResourceConfig { 
private Config config = new Config(); 

    public ApplicationConfig() { 
     super(); 
     register(new MainBinder()); 
} 
    private class MainBinder extends AbstractBinder { 
     @Override 
     protected void configure() { 
     bind(MyInterfaceImpl.class).to(MyInterface.class).in(Singleton.class); 
     } 
    } 
} 

所以,当我运行应用程序,并尝试执行方法我有一个NPE:

interface.doTask(); 

瞧,我很抱歉地问,但我需要对一些帮助,再加上我一直在努力,是尽可能通用,希望它不会影响你的理解。 在此先感谢!

编辑:忘了提,类MyClass的()被调用另一类是这样的:new MyClass()

所以我觉得这个问题可能是在那里。

+0

这里ResourceConfig的实现是什么?这是在泽西岛吗? – jwells131313

+0

你好,是的,这是在泽西岛。 – hhelbawi

回答

2

所以我想通了! 我正在创建一个myClass =>new MyClass()的新实例,因此注入无法工作! 所以我注入了MyClass()而不是创建一个新实例并将其绑定到ApplicationConfig中。 这工作得很好。