You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java:公共Getter方法无法在其他类中访问的问题求助

问题分析与解决方案

这问题我熟!咱们一步步来拆解你遇到的问题:

核心原因:类型声明不匹配

你在ServerConnector类里把submitBtn声明成了JButton类型,虽然你实际传入的是ButtonSubmit的实例,但Java编译器是静态类型检查——它只认变量声明的类型,而JButton这个父类根本没有getSubmitted()方法,所以自然会报“Cannot resolve method getSubmitted()”的错误。

另外,你的代码里还有个小拼写错误:privaet JButton submitBtn;里的privaet应该改成private,不然编译也通不过哦。

两种可行的解决方案

方案1:直接修改变量声明类型

把ServerConnector里的submitBtn类型改成ButtonSubmit,这样编译器就能直接识别子类特有的方法了:

public class ButtonSubmit extends JButton{ 
    private boolean submitted; 
    /* ... */ 
    public boolean getSubmitted(){ 
        return this.submitted; 
    } 
}

public class ServerConnector{ 
    private ButtonSubmit submitBtn; // 这里改成ButtonSubmit类型
    public ServerConnector(ButtonSubmit submitBtn){ 
        this.submitBtn = submitBtn; 
    } 
    /*..*/ 
    public void start(){ 
        while(true){ 
            if(this.submitBtn.getSubmitted()){ 
                /**/ 
            } 
            /**/ 
        } 
    } 
}

方案2:类型转换(适合需要兼容父类的场景)

如果你的ServerConnector需要接受任意JButton子类的实例,不想限定死类型,可以在调用方法时做强制类型转换,记得先加instanceof判断保证安全:

public class ServerConnector{ 
    private JButton submitBtn; 
    public ServerConnector(JButton submitBtn){ 
        this.submitBtn = submitBtn; 
    } 
    /*..*/ 
    public void start(){ 
        while(true){ 
            // 先判断类型再转换,避免ClassCastException
            if(this.submitBtn instanceof ButtonSubmit){
                if(((ButtonSubmit) this.submitBtn).getSubmitted()){ 
                    /**/ 
                }
            }
            /**/ 
        } 
    } 
}

内容的提问来源于stack exchange,提问作者alex_z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:12:33