親の抽象クラスと具象の子クラスがあります。抽象メソッドには、子クラスが実装する1つの具象メソッドともう1つの抽象メソッドがあります。これらのクラスは両方ともSpringBeanとして構成されています。コードスニペットは次のようになります。
Spring Config:
<bean id="parent" class="Parent" abstract="true">
<property name="propA" ref="propA"/>
<property name="cacheMan" ref="cacheMan"/>
</bean>
<bean id="child" class="Child" parent="parent">
<property name="propB" ref="propB"/>
<property name="cacheMan" ref="cacheMan"/>
</bean>
<!-- Of course, cacheMan is defined elsewhere and not relevant here.-->
クラス定義:
public abstract class Parent {
private A propA; // A is irrelevant.
private CacheManager cacheMan; // This is the object in question.
public void doProcess1() {
//code logic
if (cacheMan == null) {
// Error!
}
}
public void doProcess2();
}
public class Child extend Parent {
private B propB; // Again, B is irrelevant.
private CacheManager cacheMan; // This is the object in question.
public void doProcess2() {
//code logic
}
}
public class Test {
private Parent parent; //Assume this is Spring injected and it's of type Child.
public void doTest() {
parent.doProcess1(); // Error thrown since cacheMan is null.
}
}
これらのクラスは両方とも、に適切なゲッター/セッターメソッドを持っていますcacheMan
。cacheMan
メソッドでどのようにnullになっているのかわかりませんdoProcess1()
。ただし、その行をから変更すると
cacheMan == null
にgetCacheMan() == null
、エラーはスローされません。
はインスタンスのものであり、それがnullではない理由であるgetCacheMan()
ため、は子クラスに注入されたオブジェクトを取得していると思います。parent
Child
それに光を当てて、これが明確でない場合は私に知らせてください。