事実JComboBox
、Java6ではジェネリックではありませんでしたが、デザインに欠陥があるという理由だけで7でジェネリックになりました(getItemAt()
オブジェクトタイプが返されたため、手動でキャストする必要がありました)。
メソッドは次のように宣言されます
public void setPrototypeDisplayValue(E prototypeDisplayValue)
つまり、呼び出すには特定のクラスの特定のインスタンスが必要であり、そのタイプはコンボボックス用に宣言されたものに対応している必要があります。
public void setComboBoxDefaultWidth(JComboBox<String> cb) {
cb.setPrototypeDisplayValue("mmmmmmmmmmmmmmmmmmmmmmmmmm");
}
String
メソッドにaを渡すため、強制的に実行するJComboBox
必要があります。そのため、にはsが含まれている必要がありますString
。
上記の解決策は、呼び出したいメソッドがジェネリック型のパラメーターを必要とする場合に実行する必要があることです。それ以外の場合は、(ターゲットの数を指定せずに)指定できず、ワイルドカード?
が存在することを使用する必要があります。メソッドがジェネリッククラスの特定のタイプを気にしない場合は、を指定する必要がありますJComboBox
。タイプが何であるかを気にせずに汎用タイプ:
public static void setComboBoxDefaultWidth(JComboBox<?> cb) {
cb.setLightWeightPopupEnabled(true);
}
構文<?>
は文字通り未知のタイプを意味し、パラメータは確かJComboBox
に未知のタイプのアイテムです。