在FetchStockApi类中调用ArrayList的add()方法报无法解析符号错误
解决“Cannot resolve symbol 'add'”编译错误
错误原因
你在FetchStockApi类的类级别代码块里直接调用listModels.add()方法,这违反了Java语法规则:类中只能定义成员变量,所有执行性代码(比如集合添加元素)必须放在构造函数、普通方法或者初始化块中,不能直接暴露在类作用域下。
修正方案
把添加元素的逻辑放到FetchStockApi的构造函数里,创建类实例时会自动初始化集合数据:
修改后的FetchStockApi.java代码:
package com.example.stockapipractice2; import java.util.ArrayList; public class FetchStockApi { ArrayList<suggestListModel> listModels = new ArrayList<>(); // 构造函数,初始化集合数据 public FetchStockApi() { String stockName = "Nifty 50"; String stockSymbol = "NFTY"; String exchange = "NSI"; String type = "Index"; suggestListModel suggestListModel = new suggestListModel(stockName, stockSymbol, exchange, type); listModels.add(suggestListModel); } }
额外优化点
- 原代码里
FetchStockApi继承AppCompatActivity完全多余,它只是数据处理类,不需要继承Activity,直接去掉即可。 - 变量名遵循小驼峰命名规范(比如把
SuggestListModel改成suggestListModel),符合Java编码习惯。 - 如果后续要做网络请求获取真实股票数据,记得把请求逻辑放到异步线程(比如用Coroutine、OkHttp异步回调),避免阻塞主线程导致ANR。
验证
修改后,MainActivity里的代码无需改动,创建FetchStockApi实例时,构造函数会自动初始化listModels集合,适配器就能正常拿到数据并渲染RecyclerView了。
内容的提问来源于stack exchange,提问作者Prateek
相关产品推荐
相关产品推荐

