Java实现返回ArrayList<String>的getLine方法报类型不兼容问题
getLine方法类型不兼容报错原因
- 核心类型不匹配问题
你声明的nLine是ArrayList<String>类型,该集合只能存入String类型的元素。而你调用的players.get(i).getAttributes()返回值是ArrayList类型,你直接将集合对象作为元素存入要求存String的列表,就会触发「ArrayList无法转换为String」的报错。
如果getAttributes()返回的是当前行所有属性值组成的字符串集合,你需要把这个集合里的元素逐个取出来添加到nLine,或者直接调用addAll方法批量添加:
// 示例修改方案 public ArrayList<String> getLine(int line) { ArrayList<String> nLine = new ArrayList<String>(); // 可自行补充line合法性校验逻辑,避免数组下标越界 nLine.addAll(players.get(line).getAttributes()); return nLine; }
- 额外逻辑问题
你当前代码里将first和last都硬编码为0,完全没有用到入参line,循环也只会执行1次取第0个元素,和「获取指定行属性值」的需求不符。
另外你现有的getLines方法虽然运行没有报错,但也存在逻辑问题:没有按需求调用getLine()方法,也没有用到入参firstLine、lastLine,硬编码循环范围为0到0,不符合功能要求,参考修改方案如下:
public ArrayList<ArrayList<String>> getLines(int firstLine, int lastLine) { ArrayList<ArrayList<String>> listLines = new ArrayList<>(); // 可自行补充参数合法性校验逻辑 for (int i = firstLine; i<= lastLine; i++) { listLines.add(getLine(i)); } return listLines; }
内容的提问来源于stack exchange,提问作者Tash
相关产品推荐
相关产品推荐

