java générique constructeurs

Actuellement j'ai le code suivant qui récupère les données de la base de données, puis créer un User. Ce code est utilisé dans de nombreux de ma classe pour créer d'autres objets tels que des News, Commentsetc...

Il utilise apache commons dbutils.

final ResultSetHandler<User> handler = new ResultSetHandler<User>() {

            @Override
            public User handle(ResultSet rs) throws SQLException {

                User user = null;
                if (rs.next()) {
                    user = new User();
                    user.setId(rs.getInt("id"));
                    user.setUsername(rs.getString("username"));
                    user.setPassword(rs.getString("password"));
                }
                return user;
            }
        };

        final User user = run.query(
                "SELECT id, username, password FROM users WHERE username = ? AND active = 2 LIMIT 1;", handler,
                username);

Serait-il possible d'encapsuler le QueryRunner dans une classe générique et de remplacer la méthode de requête afin que le gestionnaire instancier le générique T avec le jeu de résultats. Je voudrais assurez-vous que tout Ttype devrait avoir un constructeur acceptant un ResultSet.

Comme suit :

        public class QueryExecuter<T> extends QueryRunner {
    private ResultSetHandler<T> _handler;

    public QueryExecuter(){//The T type was for testing haha
        super();
        handler = new ResultSetHandler<T>() {

            @Override
            public T handle(ResultSet rs) throws SQLException {

                T object = null;
                if (rs.next()) {
                    object = new T(rs);
                }
                return object;
            }
        };
    }
}

Je ne sais pas si vous allez comprendre, mais je l'espère, me demander si vous voulez plus de détails ou une meilleure explication.

MODIFIER

Je pensais que je pouvais utiliser un AbstractClass plutôt du type générique que tous les différents objets s'étend, mais il me semble que je ne peux pas écrire un résumé constructeur. Vais-je devoir faire une méthode statique qui renvoie une instance de l'objet comme:

public abstract class DatabaseEntity {
    public static abstract DatabaseEntity create(ResultSet rs);//even this doesn't work...
}
pourquoi avez-vous besoin de passer T type dans le constructeur?
utiliser la réflexion, vous pouvez appeler le constructeur de la classe avec le jeu de résultats

OriginalL'auteur David | 2012-02-07