为什么我不能以下列方式重载 JTextField 类型的类成员:`
private JTextField m_oFilename=new JTextField();
public JTextField filename()
{ return this.m_oFilename; }
public String filename()
{ return this.m_oFilename.getText(); }
为什么我不能以下列方式重载 JTextField 类型的类成员:`
private JTextField m_oFilename=new JTextField();
public JTextField filename()
{ return this.m_oFilename; }
public String filename()
{ return this.m_oFilename.getText(); }
在 Java 中,重载是指具有不同方法签名的同名方法。但是,返回类型不是方法签名的一部分。
编译器必须知道要解析哪种返回类型,如果方法签名相同,则无法区分它们或知道使用哪个,因此根据 JLS 8.4.2 ,这是不允许的。
因为它不使用方法的输出来确定它应该调用哪个方法。
例如,如果您刚刚执行,应该运行哪个方法:
m_oFilename.filename();
编译器不知道要运行哪个,因此无法编译。