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 に答える