Ingredient::getIngredientId报错,错误信息:Non-static method cannot be referenced from a static context
时间: 2024-06-16 13:08:31 浏览: 86
Ingredient::getIngredientId报错的原因是非静方法不能从静态上下文中引用。这意味着你在一个静态方法中尝试调用了一个非静态方法。
在面向对象编程中,静态方法是属于类的,而非静态方法是属于类的实例的。静态方法可以直接通过类名调用,而非静态方法需要通过类的实例来调用。
解决这个问题的方法是,要么将调用该方法的方法也设置为非静态方法,要么将被调用的方法设置为静态方法。具体取决于你的需求和设计。
相关问题
如何打印使"Dinner with ingredient:" + ingredient.getName() + "-" + ingredient.getPrice() + "; Total bill" + totalBill中"Dinner with ingredient:"只有一遍
你可以使用一个标志变量,例如 `printHeader`,来判断是否需要打印 "Dinner with ingredient:"。在第一次打印时将其设置为 `True`,之后就不再打印。以下是伪代码示例:
```
printHeader = True
for ingredient in ingredients:
if printHeader:
print("Dinner with ingredient:")
printHeader = False
print(ingredient.getName() + "-" + ingredient.getPrice())
print("Total bill " + totalBill)
```
解释这段代码@Override public Iterable<Ingredient> findAll() ( return jdbc,query("select id, name, type from Ingredient", this::mapRowToIngredient); }的 this::mapRowToIngredient
这段代码是一个 Java 8 中的 Lambda 表达式,它的作用是将数据库中的数据映射为 Ingredient 对象。this::mapRowToIngredient 表示将当前对象的 mapRowToIngredient 方法作为参数传递给 query 方法,query 方法会在查询结果中的每一行数据上调用 mapRowToIngredient 方法,将其转换为 Ingredient 对象。这样,findAll 方法就可以返回一个包含所有 Ingredient 对象的 Iterable。
阅读全文