명시 적으로 클래스의 형식을 정의하는 하나의 생성자로 일반 클래스를 작성할 수 있습니까?명시 적으로 형식화 된 생성자가있는 일반 클래스
import javax.swing.JComponent;
import javax.swing.JLabel;
public class ComponentWrapper<T extends JComponent> {
private T component;
public ComponentWrapper(String title) {
this(new JLabel(title)); // <-- compilation error
}
public ComponentWrapper(T component) {
this.component = component;
}
public T getComponent() {
return component;
}
public static void main(String[] args) {
JButton button = new ComponentWrapper<JButton>(new JButton()).getComponent();
// now I would like to getComponent without need to cast it to JLabel explicitly
JLabel label = new ComponentWrapper<JLabel>("title").getComponent();
}
}
감사합니다. 나는 나의 의도를 더 잘 설명하기 위해 나의 질문을 수정했다. 내가하고 싶은 것은'JLabel label = new ComponentWrapper ("text"). getComponent()'입니다. –
하지만 이것은 매우 안전하지 않습니다. '새로운 ComponentWrapper ("SomeString"); 가장 좋은 경우는'ClassCastException's가 끝날 때인 것 같아요 ... –
Romain
'new ComponentWrapper ("SomeString")'은 컴파일 오류 일 수 있습니다. 런타임에는'ClassCastException'이 없습니다. –