有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我使用的是SpringJMS API,DefaultMessageListenerContainer

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

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

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

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

附加示例java代码段

enter image description here


共 (1) 个答案

  1. # 1 楼答案

    您发布的代码片段没有从子类中访问getBeanName()。它正在尝试从客户端代码访问它。您必须定义自己的子类以公开一个公共方法来访问它:

    class MyDefaultMessageListenerContainer extends DefaultMessageListenerContainer {
        public getMyBeanName() { return getBeanName(); }
    }
    
    MyDefaultMessageListenerContainer container = new MyDefaultMessageListenerContainer();
    String name = container.getMyBeanName();
    

    请注意,您不能简单地重写getBeanName(),因为它被声明为final