@Romka21

Java реализация метода?

Друзья подскажите как в java делать подобные вещи.

Вот есть методы типа:
public static List<User> findAll() {
        List<User> list = (List<User>)  HibernateSessionFactoryUtil.getSessionFactory().openSession().createQuery("From "+User.class.getSimpleName()).list();
        return list;
    }


public static List<Group> findAll() {
        List<Group> list = (List<Group>)  HibernateSessionFactoryUtil.getSessionFactory().openSession().createQuery("From "+Group.class.getSimpleName()).list();
        return list;
    }


Можно ли передавать некую конструкцию на входе, что бы сделать метод универсальным и не делать List list = (List) , шас получается что у меня для каждого объекта есть метод findAll() , который по сути одинаков по функционалу, но отличается описанием объектов. В голосу приходит только реализация в методе instanceOf
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
@ivorobioff
Software Engineer
да можно с помощью generics.

если бы у тебя небыли статические методы то можно было бы сделать так:

public class Repository<T> {
    
    public List<T> findAll() {
        List<T> list = (List<T>)  HibernateSessionFactoryUtil.getSessionFactory().openSession().createQuery("From "+User.class.getSimpleName()).list();
        return list;
    }
}


но со статическим методом только так:

public static <T> List<T> findAll(Class<T> type) {
        List<T> list = (List<T>)  HibernateSessionFactoryUtil.getSessionFactory().openSession().createQuery("From "+User.class.getSimpleName()).list();
        return list;
    }


ну и при использование это будет выглядеть так:

Repository.findAll(User.class);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
App-Smart Краснодар
от 1 500 eur.
Банк СКС Москва
от 150 000 до 200 000 руб.
TEAMIDEA Тверь
от 70 000 до 120 000 руб.