有人知道我是否可以在我的对象中注入内部类? 我想写类似的东西:
@Named
public class ClassA {
@Inject
private InnerClass myObject;
public class InnerClass extends DefaultImplementation implements Serializable{
public String overriddenMethod() {
// do something special
}
}
}
我想做这些奇怪的事情,因为我有一个默认的实现,我在80%的用例中使用它进行注入。但是对于特殊逻辑,我必须覆盖默认实现中的一些方法。
我不想创建额外的类文件,因为我只想覆盖两行代码。
如果我在OpenWebBeans-Contrainer中尝试代码,我会收到以下错误:
javax.enterprise.inject.UnsatisfiedResolutionException:找不到限定符的Api类型[ClassA $ InnerClass] 资格赛:[@ javax.enterprise.inject.Default()] 注入Field:private ClassA $ InnerClass ClassA.myObject
答案 0 :(得分:2)
如果声明为“public static”
,内部类的注入应该有效答案 1 :(得分:0)
要解决您的问题,只需将课程更改为
即可public static class InnerClass //...
它可能看起来有点不直观,但java静态类与c#之类的语言有很大不同。在java中,静态类仅用于您所处的情况,您希望利用嵌套类,而不必首先创建外部类的实例。实际上,在java中创建静态类而不是嵌套类是无效的。
请参阅此答案以获取更多详细信息:Why are you not able to declare a class as static in Java?