繁体   English   中英

Spring不能静态引用非静态方法吗?

[英]Spring can't make static reference to non-static method?

这是我的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;
}

CategoreDAO类中的代码

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;
}

我收到一个错误,指出静态引用不能成为非静态方法。

请查看第一个代码段。 您会明白问题所在

是的,绝对如此。

静态对象和非静态对象的工作方式不同。 对于非静态方法,必须在使用之前实例化。 这就是为什么在静态方法中使用非静态方法无效的原因。

还有一件事,将在构造函数之前调用静态块。 因此,请仔细检查您的业务逻辑。 我不太明白为什么要覆盖静态块中的其他功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM