を示して、私は次のように定義された機能を持っています)は、このように定義されています渡す方法の参照はエラー
int getInt(int columnIndex)
私のコンパイラは、パラメータResultSet::getInt
のエラーを以下の私を示しています。 静的コンテキストから非静的メソッドを参照することはできません
ここで間違っていますか?
を示して、私は次のように定義された機能を持っています)は、このように定義されています渡す方法の参照はエラー
int getInt(int columnIndex)
私のコンパイラは、パラメータResultSet::getInt
のエラーを以下の私を示しています。 静的コンテキストから非静的メソッドを参照することはできません
ここで間違っていますか?
ResultSet::getInt
は静的メソッドへの参照ですが、メソッドはインスタンスメソッドです。これはエラーです。
public static <T> T readSingleValue(MyTransaction t, String s, T alternativeVal, Function<ResultSet, T> rsGetter)
と、それは、データベースから複数の列から構成することができ、所望の物体にResultSet
をマッピングすることができますので、機能Function<ResultSet, T> rsGetter
がより強力である
readSingleValue(transaction, "select count(0) from users", 0, rs -> rs.getInt(1));
それを呼び出す:別のオプションがある可能性があります。例えば、あなたが持つことができる
readSingleValue(transaction, "select * from users where user_id = 1", null,
rs -> {
User u = new User();
u.setId(rs.getInt(1));
u.setName(rs.getString(2));
...
return u;
});
'rs :: getInt'を使うだけです。 – NoDataFound
'resultSet'はメソッド' readSingleValue'の中で作成されたと思います。なぜなら、彼はメソッドにsql文字列を渡すからです。 resultSetを既に持っている場合、SQLを渡すのはなぜですか? – AlexCV
'getInt'を呼び出すための' ResultSet'オブジェクトはどこにありますか? –
良い質問ですが、私はこれについて考えていません。ありがとう – sfandler
変数 'ResultSet rs'がある場合は、メソッド参照の最後のパラメータとしてメソッド参照' rs :: getInt'を使用できます。 – Misha