无法访问子类中的受保护方法
Unable to access protected method in subclass
我无法访问子class(在同一个包中)中的受保护方法。
我正在使用 spring-jms API,DefaultMessageListenerContainer class.
在我的代码中,我有一个 DefaultMessageListenerContainer 的实例 class,我正在尝试对该对象调用 getBeanName() 方法,但在 eclipse 中它说,
"The method getBeanName() from the type AbstractJmsListeningContainer is not visible"
根据 javadoc,此 getBeanName() 方法是在 superclass、'AbstractJmsListeningContainer'.
中定义的受保护方法
根据我的理解,我们应该能够访问 subclass 中的受保护方法。
我错过了什么吗?
附上示例 java 代码片段。
您发布的代码片段未从子类中访问 getBeanName()
。它正试图从客户端代码访问它。你必须定义你自己的子类来公开一个 public 方法来访问它:
class MyDefaultMessageListenerContainer extends DefaultMessageListenerContainer {
public getMyBeanName() { return getBeanName(); }
}
MyDefaultMessageListenerContainer container = new MyDefaultMessageListenerContainer();
String name = container.getMyBeanName();
请注意,您不能简单地覆盖 getBeanName()
,因为它被声明为 final
。
我无法访问子class(在同一个包中)中的受保护方法。
我正在使用 spring-jms API,DefaultMessageListenerContainer class.
在我的代码中,我有一个 DefaultMessageListenerContainer 的实例 class,我正在尝试对该对象调用 getBeanName() 方法,但在 eclipse 中它说,
"The method getBeanName() from the type AbstractJmsListeningContainer is not visible"
根据 javadoc,此 getBeanName() 方法是在 superclass、'AbstractJmsListeningContainer'.
中定义的受保护方法根据我的理解,我们应该能够访问 subclass 中的受保护方法。 我错过了什么吗?
附上示例 java 代码片段。
您发布的代码片段未从子类中访问 getBeanName()
。它正试图从客户端代码访问它。你必须定义你自己的子类来公开一个 public 方法来访问它:
class MyDefaultMessageListenerContainer extends DefaultMessageListenerContainer {
public getMyBeanName() { return getBeanName(); }
}
MyDefaultMessageListenerContainer container = new MyDefaultMessageListenerContainer();
String name = container.getMyBeanName();
请注意,您不能简单地覆盖 getBeanName()
,因为它被声明为 final
。