Java餐厅模拟项目:跨类访问ArrayList报错‘无法解析getStarters方法’求助
问题根源
你的Bill类位于BillsIncome包下,但Menu类没有声明任何包(处于默认包)。Java的访问规则中,默认包的类无法被其他包的类直接引用,这就是编译器找不到getStarters()方法的核心原因——它连Menu类的正确引用都没找到,更别说它的方法了。
解决方案
步骤1:给Menu类添加包声明
给Menu类指定一个包(比如单独创建Menu包,或者和Foods类同包),示例如下:
package Menu; // 添加包声明 import Foods.Desserts; import Foods.Drinks; import Foods.Main; import Foods.Starter; import java.util.ArrayList; public class Menu { // 原有代码保持不变... }
步骤2:在Bill类中导入Menu类
在Bill类的开头添加Menu类的导入语句:
package BillsIncome; import Menu.Menu; // 添加导入语句 import Foods.Desserts; import Foods.Drinks; import Foods.Main; import Foods.Starter; import java.awt.*; import java.util.ArrayList; public class Bill { public static void main(String[] args) { Menu menu = new Menu(); // 原有代码保持不变... System.out.println(menu.getStarters()); } }
额外建议
- 项目中所有类都应该放在明确的包下,避免使用默认包,这是Java项目的基本规范,能避免很多类引用问题。
- 检查
TakeOrder类的包结构,如果它也在其他包,同样需要确保正确导入。
内容的提问来源于stack exchange,提问作者Fionn
相关产品推荐
相关产品推荐

