我一直在努力解决这个问题,所以我来到这里与你分享。 首先,我想要一个对象注入一个类:
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()
所以我认为问题可能存在。
答案 0 :(得分:2)
所以我明白了!
我正在创建myClass =>的新实例new MyClass()
因此注射不起作用!
所以我注入了MyClass()而不是创建一个新实例并将其绑定在ApplicationConfig中。
这很好。