Struts2值栈
④Map栈
[1]似曾相识的Map栈对象
大家是否还记得,在获取Web资源时用到的ActionContext类中,有一个成员变量指向了一个Map,它的声明如下
private Map<String, Object> context; |
而我们OgnlValueStack类中也有一个context成员变量指向了一个Map对象,声明如下
transient Map<String, Object> context; |
他们指向的是同一个对象吗?我们可以比较一下
//1.从值栈对象中获取context对象 Map<String, Object> contextFromVS = valueStack.getContext(); //2.从ActionContext对象中获取context对象 Map<String, Object> contextFromAC = ActionContext.getContext().getContextMap(); //比较这两种方式获取的context对象,返回true System.out.println(contextFromVS == contextFromAC); |
通过程序验证我们发现,contextFromVS和contextFromAC指向同一块内存区域,证明他们指向的是同一个Map对象。它们之间的关系可以用下图表示:
本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源,欢迎大家关注尚硅谷公众号(atguigu)了解更多。