에 제네릭을 처리하기 위해 어떻게해야 :자바 스윙 - ActionListener를
JComboBox가 원시 유형 : jdk7에서 다음과 같은 컴파일러 경고가 발생
class CustomerActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent event)
{
JComboBox cb = (JComboBox)event.getSource();
.. do something
}
}
합니다. 제네릭 형식 JComboBox에 대한 언급은 나는 그런 그에게 매개 변수화 시도했습니다
매개 변수가 있어야한다 :
JComboBox<String> cb = (JComboBox<String>)event.getSource();
그러나 이것은 여전히 다음과 같은 컴파일러 경고 잎 :
유형의 안전 : 체크되지 않은 캐스트 Object에서 JComboBox로
따라서 컴파일러 경고를 제거하는 방법을 모르겠습니다 ...
instanceof check가 도움이됩니까? 비록 당신이 알고 있더라도 당신은 항상 끝에 JComboBox를 얻을 것입니다. – Rex
나는 문제를 해결하기위한 해결책을 "코드화"하지 않는다고 생각합니다. 어느 정도까지 경고를 억제 할 수 있습니다. http://stackoverflow.com/questions/593996/how-to-suppress-java-compiler-warnings-for-specific-functions를 살펴보십시오. 문제는 컴파일러가 'ActionEvent.getSource'를보고 "객체가 있고 이론적으로는 나를 캐스팅 할 수 있습니다. 나를 캐스팅하려고하는 것은 작동하지 않을 수도 있습니다"라고 말합니다. – MadProgrammer
경고하지만 그것은 나에게 이상적이지 않습니다. 모든 컴파일러 경고에 그렇게했다면, 좋지 않을 것이라고 말하자. 항상 가능한 경우이를 왜 적절하게 해결하는 것이 더 나은지 항상 확인하십시오. –