Java Swing中ArrayList.size()失效?构造方法参数覆盖问题排查
排查你的QuizCard ArrayList.size()问题
嘿,我太懂这种翻遍资料还是卡壳的感觉——肯定是某个不起眼的小细节没注意到!咱们来一步步揪出问题所在:
最常见的坑:忘记初始化ArrayList
很多时候问题出在只声明了ArrayList变量,但没创建实际的实例。比如你可能写了:
private ArrayList<String> questions; private ArrayList<String> answers; public QuizCard() { questions.clear(); // 这里会直接抛NullPointerException! answers.clear(); questions.add(0, "默认问题"); }
如果没有先执行questions = new ArrayList<>();和answers = new ArrayList<>();,你的ArrayList变量其实是null,调用clear()或者add()都会出问题,后续的size()自然也不会返回预期的1。
检查代码执行顺序
确认你是先添加元素,再调用size()。如果在构造方法里不小心先调用了size(),再添加默认问题,那拿到的肯定是0而不是1。比如这种错误顺序:
public QuizCard() { questions = new ArrayList<>(); System.out.println(questions.size()); // 输出0,因为还没加元素 questions.add("默认问题"); }
确认没有其他代码修改列表
看看构造方法之后,有没有其他地方(比如GUI初始化代码)不小心调用了clear(),或者重新创建了QuizCard实例?如果你的GUI组件绑定的是一个新的、空的QuizCard对象,那展示的时候size自然不对。
给你一个正确的示例构造方法
参考这个写法,确保初始化和添加元素的步骤都正确:
public class QuizCard { private ArrayList<String> questions; private ArrayList<String> answers; public QuizCard() { // 第一步:初始化ArrayList实例 questions = new ArrayList<>(); answers = new ArrayList<>(); // 清空(其实刚初始化的列表本来就是空的,这一步可以省略) questions.clear(); answers.clear(); // 添加默认问题和对应答案 questions.add("默认问题示例?"); answers.add("默认答案示例"); // 这里测试的话,size应该返回1 System.out.println("当前问题数量:" + questions.size()); } }
最后再提个小建议:运行程序的时候看看控制台有没有报错(比如NullPointerException),这些错误信息往往能直接点出问题所在!
内容的提问来源于stack exchange,提问作者Paris B. G.
相关产品推荐
相关产品推荐

