我无法访问子类中的受保护方法(在同一个包中)。
我使用的是spring-jms API, DefaultMessageListenerContainer 类。
在我的代码中,我有一个DefaultMessageListenerContainer类的实例,我试图在该对象上调用getBeanName()方法,但在eclipse中它说,
“AbstractJmsListeningContainer类型的方法getBeanName()不可见”
根据javadoc,这个getBeanName()方法是在超类“AbstractJmsListeningContainer”中定义的受保护方法。
根据我的理解,我们应该能够访问子类内的受保护方法。 我错过了什么吗?
附加示例Java代码段。
答案 0 :(得分:2)
您发布的代码片段未从子类中访问getBeanName()
。它试图从客户端代码访问它。你必须定义自己的子类来公开一个公共方法来获取它:
class MyDefaultMessageListenerContainer extends DefaultMessageListenerContainer {
public getMyBeanName() { return getBeanName(); }
}
MyDefaultMessageListenerContainer container = new MyDefaultMessageListenerContainer();
String name = container.getMyBeanName();
请注意,您不能简单地覆盖getBeanName()
,因为它已声明为final
。