为什么@Inject永远不会在我的抽象类中被调用

时间:2015-02-18 14:29:58

标签: java rcp e4

我有如下所示的情况。当我在调试器中运行该类时,@Inject永远不会访问myInjectMethod。如果我将myInjectMethod移动到MyService则可行。为什么会这样?

@Singleton
@Creatable
public class MyService extends MyBaseService {

    @Inject
    public MyService(final IEclipseContext context) {
        context.set(MyService.class.getName(), this);
    }
}

abstract class MyBaseService {
    @Inject
    public void myInjectMethod(@Preference(nodePath = "MyPreferenceName", 
           value = "MyPreferenceValue") final boolean isSomething) {
         // Why do I never get here when running the debugger?
         System.out.println("Hello");
    }
}

2 个答案:

答案 0 :(得分:0)

尝试将抽象类移动到自己的文件并将其公开。

您使用的是哪种DI框架?它可能不支持查看超类。

答案 1 :(得分:0)

如果抽象类是包级别的话,似乎@Inject不会触发。当我将抽象类更改为public时,它开始工作。