代码之家  ›  专栏  ›  技术社区  ›  KernelPanic

java getter重载

  •  1
  • KernelPanic  · 技术社区  · 11 年前

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

    private JTextField m_oFilename=new JTextField();
        public JTextField filename()
            { return this.m_oFilename; }
        public String filename()
            { return this.m_oFilename.getText(); }
    
    2 回复  |  直到 11 年前
        1
  •  5
  •   rgettman    11 年前

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

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

        2
  •  2
  •   Thomas Sidoti    11 年前

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

    例如,如果您刚刚执行了以下操作,那么应该运行哪个方法:

    m_oFilename.filename();
    

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