getValue() メソッドにアクセスできるように ChangeEvent オブジェクトを JSpinner オブジェクトにキャストし直す代わりに、なぜ e.getSource() はイベントの生成に使用された型のプレキャスト オブジェクトを返さないのでしょうか? e.getSource() を最初に使用すると、JSpinner が使用されていることを認識していることがわかります。もっとシンプルになりそうです。これを行わない安全上の理由があると思いますが、デフォルトの使用法としてそれが悪いことになる具体的な例を見たり聞いたりしたいと思います.
安全ではありませんか?それは単に悪いアーキテクチャですか?
public class SpinnerPanel extends JPanel implements ChangeListener {
...
SpinnerPanel()
{
birthdaySpinner.addChangeListener(this);
add(birthdaySpinner);
}
@Override
public void stateChanged(ChangeEvent e)
{
System.out.println(e.getSource());
JSpinner spinner = (JSpinner)e.getSource();
System.out.println(spinner.getValue());
}
}