1

为什么我不能以下列方式重载 JTextField 类型的类成员:`

private JTextField m_oFilename=new JTextField();
    public JTextField filename()
        { return this.m_oFilename; }
    public String filename()
        { return this.m_oFilename.getText(); }
4

2 回答 2

5

在 Java 中,重载是指具有不同方法签名的同名方法。但是,返回类型不是方法签名的一部分。

编译器必须知道要解析哪种返回类型,如果方法签名相同,则无法区分它们或知道使用哪个,因此根据 JLS 8.4.2 ,这是不允许的。

于 2013-03-27T19:48:53.590 回答
2

因为它不使用方法的输出来确定它应该调用哪个方法。

例如,如果您刚刚执行,应该运行哪个方法:

m_oFilename.filename();

编译器不知道要运行哪个,因此无法编译。

于 2013-03-27T19:50:59.450 回答