Java代码调用getLojas()无返回结果,无语法错误求排查
问题分析与解决方案
首先,先把你的代码格式化出来,方便查看:
public class ListaLojas { private HashMap<String, Loja> lojas; TreeMap<Integer, Loja> copy = new TreeMap<>(Collections.reverseOrder()); public ListaLojas(){ lojas = new HashMap<>(); } public HashMap getLojas(){ return lojas; } } public class Aplicacao{ public static void main(String[] args) { ListaLojas listL = new ListaLojas(); listL.putLoja("loja1", l1); listL.putLoja("loja2", l2); listL.putLoja("loja3", l3); listL.putLoja("loja4", l4); listL.putLoja("loja5", l5); listL.putLoja("loja6", l6); listL.getLojas(); } }
你遇到的核心问题很明确:你只是调用了getLojas()方法,但没有对返回的结果做任何输出操作,所以控制台自然不会显示任何内容。下面给你具体的解决步骤和优化建议:
1. 输出返回的集合内容
要看到getLojas()的返回结果,你需要在main方法里把返回的HashMap打印出来。比如修改main方法:
public static void main(String[] args) { ListaLojas listL = new ListaLojas(); // 假设l1到l6是已经初始化好的Loja对象 listL.putLoja("loja1", l1); listL.putLoja("loja2", l2); listL.putLoja("loja3", l3); listL.putLoja("loja4", l4); listL.putLoja("loja5", l5); listL.putLoja("loja6", l6); // 方式1:直接打印整个HashMap System.out.println("所有店铺集合: " + listL.getLojas()); // 方式2:遍历集合,逐个打印键值对(更清晰) HashMap<String, Loja> lojasMap = listL.getLojas(); for (Map.Entry<String, Loja> entry : lojasMap.entrySet()) { System.out.println("店铺ID: " + entry.getKey() + ", 店铺信息: " + entry.getValue()); } }
这样运行后,控制台就会显示lojas集合里的所有内容了。
2. 补充潜在的缺失代码
你在main里调用了putLoja方法,但原ListaLojas类里没有这个方法的实现(你说代码无语法错误,应该是省略了),需要补充这个方法才能正确存入数据:
public class ListaLojas { // ... 原有代码 ... // 补充putLoja方法 public void putLoja(String key, Loja loja) { lojas.put(key, loja); } }
3. 优化代码的封装性与规范性
getLojas()方法当前返回的是内部HashMap的原始引用,外部可以直接修改这个集合的内容,破坏类的封装性。建议返回不可修改的视图:public Map<String, Loja> getLojas(){ return Collections.unmodifiableMap(lojas); }- 返回类型改用
Map<String, Loja>接口而非具体的HashMap,符合面向接口编程的原则,后续如果更换集合实现类也更灵活。
内容的提问来源于stack exchange,提问作者Tiago Alves
相关产品推荐
相关产品推荐

