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();
コンパイラはどちらを実行するかを認識しないため、これはコンパイルできません。