我有以下通用类:
public class DropdownItem<V, D> {
private V value;
private D display;
public DropdownItem(V value, D display) {
this.value = value;
this.display = display;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
public D getDisplay() {
return display;
}
public void setDisplay(D display) {
this.display = display;
}
}
如何为特定类型创建构造函数?
例如,
public DropdownItem(CustomClass custom) {
this(custom.getFoo(), custom.getBar());
}
或
public DropdownItem(CustomClass custom) {
this.value = custom.getFoo();
this.display = custom.getBar();
}
这些解决方案都不起作用。在实现泛型类时,它确实可以做到这一点:
DropdownItem<Integer, String> myItem = new DropdownItem<Integer, String>(custom.getFoo(), custom.getBar());
但是,我想在泛型类中包含一个构造函数来完成此任务。有什么想法吗?
答案 0 :(得分:4)
除了现有的构造函数之外,它看起来像工厂方法,可以帮助您:
public static DropdownItem<Integer, String> getCustomClassInstance(CustomClass custom)
{
return new DropdownItem<Integer, String>(custom.getFoo(), custom.getBar());
}
它不能是另一个构造函数。您的类是通用的,因此任何构造函数都必须处理泛型类型V
和D
,以将它们分配给value
和display
。它不能是此泛型类的构造函数中的特定类型。