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)了解更多。