사실은 JComboBox
이 Java6 만에 일반적인 아니었다이다 디자인에 결함이 있었기 때문에 (단지 getItemAt()
이 수동으로 캐스팅해야했던 Object 유형을 반환했기 때문에) 일반화되었습니다.
방법이 당신이 그것을 호출하는 특정 클래스의 특정 인스턴스를해야하며, 유형 콤보 상자 선언 하나에 해당해야한다는 것을 의미
public void setPrototypeDisplayValue(E prototypeDisplayValue)
로 선언 :
public void setComboBoxDefaultWidth(JComboBox<String> cb) {
cb.setPrototypeDisplayValue("mmmmmmmmmmmmmmmmmmmmmmmmmm");
}
String
을 메서드에 전달하므로 JComboBox
에 String
이 있어야하므로이 작업을 수행해야합니다.
위의 솔루션은 호출하려는 메서드에 제네릭 형식의 매개 변수가 필요한 경우 수행해야하는 작업입니다. 그렇지 않으면 당신은 그것을 지정할 수 없다. (얼마나 많은 표적을 넣지 않고) 당신은 와일드 카드를 사용해야 만한다. ?
존재한다 : 어떤 메소드가 어떤 종류의 generic 클래스인지 신경 쓰지 않는다면, JComboBox
는 유형이 무엇인지에 대한 걱정없이 제네릭 형식이 있습니다
public static void setComboBoxDefaultWidth(JComboBox<?> cb) {
cb.setLightWeightPopupEnabled(true);
}
구문 <?>
은 그대로 알 수없는 유형이 매개 변수가 참으로 알 수없는 유형 항목의 JComboBox
을 의미합니다.
당신은 "알 수없는"남아있을 것입니다 때문에 많은 추가로 얻을 수 없겠죠 공공 정적 무효 setComboBoxDefaultWidth'같은 (JComboBox에 CB)' –
MadProgrammer
@MadProgrammer를 사용할 수 있으므로 당신은 setPrototypeValue를 호출 할 수 없었다. –
@GuillaumePolet 당신이 맞습니다 (물론),'setPrototypeDisplayValue'가''을 가지고 있다는 것을 깨닫지 못했습니다. –
MadProgrammer