Java新手求助:如何通过get方法返回数组?
解决Java中通过get方法返回数组的问题
嘿,作为Java新手遇到数组返回的问题太正常啦,我来帮你一步步捋清楚怎么搞定它~
首先看你代码里的核心问题:get方法的返回类型和你要返回的数组类型不匹配,还有变量作用域的小细节需要调整,咱们逐个解决:
1. 修正get方法的返回类型
你现在的getTypeOfWater()方法声明返回String[],但你要返回的waters是TypeOfWater[]类型,这直接导致了类型不兼容的编译错误。只需要把方法的返回类型改成TypeOfWater[]就可以解决这个核心问题。
2. 调整变量的作用域
你现在把waters定义在类的方法外部?如果它不是类的成员变量,getTypeOfWater()可能无法访问到它。更简洁的方式有两种:要么把waters作为类的私有成员变量存储,要么直接在get方法里调用returnTypes1()获取数组。
修正后的完整代码示例
public class DrinkManager { // 替换成你的实际类名 // 可选:把waters作为类成员变量,初始化一次后复用 private TypeOfWater[] waters = returnTypes1(); // 修正返回类型为TypeOfWater[] public TypeOfWater[] getTypeOfWater() { // 两种方式二选一: // 方式1:返回类成员变量waters(复用同一个数组) return waters; // 方式2:直接调用方法返回新数组(每次调用都会创建新数组实例) // return returnTypes1(); } private static TypeOfWater[] returnTypes1() { TypeOfWater[] type = new TypeOfWater[4]; type[0] = new TypeOfWater(); type[0].name = "1)Fanta"; type[0].cost = 11; type[1] = new TypeOfWater(); type[1].name = "2)Coca"; type[1].cost = 12; type[2] = new TypeOfWater(); type[2].name = "3)Sprite"; type[2].cost = 14; type[3] = new TypeOfWater(); type[3].name = "4)Orange juice"; type[3].cost = 22; return type; } // 顺便给你的TypeOfWater类补全封装(建议用get/set访问成员变量) static class TypeOfWater { private String name; private int cost; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCost() { return cost; } public void setCost(int cost) { this.cost = cost; } } }
额外补充:如果需要返回String数组(比如仅返回饮料名称)
如果你其实想返回的是饮料名称的String数组,那可以在get方法里遍历TypeOfWater数组,提取每个元素的name:
public String[] getTypeOfWaterNames() { TypeOfWater[] waters = returnTypes1(); String[] names = new String[waters.length]; for (int i = 0; i < waters.length; i++) { names[i] = waters[i].getName(); // 用封装后的get方法更规范 } return names; }
最后提个小建议:Java里类的成员变量最好用private修饰,通过get/set方法访问,这样更符合面向对象的封装原则哦~
内容的提问来源于stack exchange,提问作者Scroll
相关产品推荐
相关产品推荐

