getValue() 메서드에 액세스 할 수 있도록 ChangeEvent 객체를 JSpinner 객체로 다시 캐스팅하지 않고 e.getSource()가 이벤트를 생성하는 데 사용 된 유형의 사전 캐스트 객체를 반환하지 않는 이유는 무엇입니까? ? e.getSource()의 첫 번째 용도는 JSpinner가 사용되고 있다는 것을 분명히합니다. 왜 다시 캐스트하지 않는 것이 좋을까요? 그것은 더 간단 할 것 같습니다. 나는 이것을하지 않는 것이 안전 이유라고 가정하고 있지만, 나는 그것이 기본 사용으로 가지는 것이 나쁜 것이되는 구체적인 예를 보거나 들으려고한다.ChangeListener의 getSource()가 이벤트를 생성하는 데 사용 된 유형의 사전 캐스트 객체를 반환하지 않는 이유는 무엇입니까?
안전하지 않습니까? 그것은 단지 나쁜 건축인가?
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());
}
}
ChangeListener는 여러 다른 구성 요소에서 모두 사용할 수 있으므로 원본 개체에 대한 자체 요구 사항이 있습니다. API가 설계되면 제네릭이 존재하지 않고 API를 변경하면 현재 실행중인 생산 코드에 영향을 미칠 수 있습니다. – MadProgrammer
아, 알았습니다. 리스너가 여러 항목에 연결되어있는 곳에서 많은 코드를 작성했다고는 생각하지 않지만 귀하의 의견은이를 수행 할 수 있음을 상기시켜주었습니다. 이는 추론을 간결하게 설명합니다. 조금 바보 같아서 물어 보았지만, 적어도 그 작은 맛있는 음식은 지금 내 머리 속에 버려졌습니다. – Azoreo
포인트를 정교하게 만들 수있는 특정 코드 스 니펫을 가지고 계신가요? 나는 여전히 그것에 대해 생각하고 있고 그것을 시각화하는 데 약간의 어려움을 겪고있다. – Azoreo