无法访问子类中的受保护方法

时间:2015-08-11 21:03:11

标签: java spring-jms

我无法访问子类中的受保护方法(在同一个包中)。

我使用的是spring-jms API, DefaultMessageListenerContainer 类。

在我的代码中,我有一个DefaultMessageListenerContainer类的实例,我试图在该对象上调用getBeanName()方法,但在eclipse中它说,

“AbstractJmsListeningContainer类型的方法getBeanName()不可见”

根据javadoc,这个getBeanName()方法是在超类“AbstractJmsListeningContainer”中定义的受保护方法。

根据我的理解,我们应该能够访问子类内的受保护方法。 我错过了什么吗?

附加示例Java代码段。

enter image description here

1 个答案:

答案 0 :(得分:2)

您发布的代码片段未从子类中访问getBeanName()。它试图从客户端代码访问它。你必须定义自己的子类来公开一个公共方法来获取它:

class MyDefaultMessageListenerContainer extends DefaultMessageListenerContainer {
    public getMyBeanName() { return getBeanName(); }
}

MyDefaultMessageListenerContainer container = new MyDefaultMessageListenerContainer();
String name = container.getMyBeanName();

请注意,您不能简单地覆盖getBeanName(),因为它已声明为final