Spring не может сделать статическую ссылку на нестатический метод? - PullRequest
0 голосов
/ 22 сентября 2018

Это мой код PageController.

@RequestMapping(value = { "/show/category/{id}/products" })
public ModelAndView showCategoryProducts(@PathVariable("id") int id) {

    // Category DAO  //Getting Error Here
    Category category = null;//Please  Explain this line also.
    category = CategoryDAO.get(id);// Getting Error in this line

    ModelAndView mv = new ModelAndView("page");
    mv.addObject("title", "All Products");
    // Passing list of categories
    mv.addObject("categories", categoryDAO.list());
    mv.addObject("userClickCategoryProducts", true);
    return mv;
}

Код в классе CategoryOAO

public interface CategoryDAO {
    List<Category> list();
    Category get(int id);
}

Другой класс, который реализует класс CategoryDAO

Repository("CategoryDAO")
public class CategoryDAOImpl implements CategoryDAO {
    private static List<Category> categories = new ArrayList<>();

    static {@Override
    public Category get(int id) {

        for(Category category:categories) {
            if(category.getId()==id)
                return category;
        }

    return null;
}

Я получаюошибка, что статическая ссылка не может сделать нестатический метод.

Пожалуйста, посмотрите в первом фрагменте кода.Вы поймете проблему

1 Ответ

0 голосов
/ 22 сентября 2018

Да, Абсолютно.

Статические и нестатические объекты работают по-разному.С нестатическим методом, вы должны создать экземпляр перед использованием.Вот почему недопустимо использовать нестатический метод в статическом методе.

Еще одна вещь, статический блок будет вызываться перед конструктором.Поэтому, пожалуйста, проверьте вашу бизнес-логику.Я не очень понимаю, зачем переопределять другие функции в статическом блоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...