私はJavaには新しく、具体的にはジェネリックコードを書くことです。私の仕事はResultSet
オブジェクトのID列の値を返す汎用関数を書くことです。Javaジェネリックの戻り値:ダブルキャスト
public <T> T getRowId(ResultSet rs) throws SQLException {
return (T)((Long)rs.getLong(idCol));
}
:
だから親クラスで、私は機能になってしまった
親クラスは、整数のIDを持ち、子クラスは、文字列のIDを持っている(私はそれが文字列IDを持っている珍しいです知っているが、データは非常に固有のものです)
と子クラスで私が親を上書きする方法があります:
public <T> T getRowId(ResultSet rs) throws SQLException {
return (T)(rs.getString(idCol));
}
をそして、私はこの関数を呼び出す必要があるとき、私はちょうど行います
getRowId(rs)
私の質問は、ダブルキャストを行う場合です(T)((Long)...)
はいいですか?そして私が気づいていないこの機能を実装する簡単な方法はありますか?
いいえ、これは罰金ではありません。 'T'は例えば' String'のようなもので、 'Long'を' String'にキャストすることはできません。 'Function'をメソッドに渡さない限り、 'long'(総称して' rs.getLong() 'の結果を返すことはできません。 –
string IDはより確かな選択肢ですtbh。 –
Tの正しい具体的な型がLong(resp String)の場合、getRow()メソッドは一般的でTを返しますか?そのコードは意味をなさないが、どのようにしてこのメソッドを含むクラスとは何ですか?このメソッド(およびそのクラス)の責任は何ですか? –