@inject似乎不适用于NPE

时间:2015-07-13 10:47:44

标签: java dependency-injection nullpointerexception jersey hk2

我一直在努力解决这个问题,所以我来到这里与你分享。 首先,我想要一个对象注入一个类:

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();

Voilà,我很抱歉,但我需要一些帮助,而且我试图尽可能地通用,希望它不会影响你的理解力。 提前谢谢!

编辑:忘记提及在另一个类中调用类MyClass():new MyClass()

所以我认为问题可能存在。

1 个答案:

答案 0 :(得分:2)

所以我明白了! 我正在创建myClass =>的新实例new MyClass()因此注射不起作用! 所以我注入了MyClass()而不是创建一个新实例并将其绑定在ApplicationConfig中。 这很好。