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
相关产品推荐
相关产品推荐

