研读ActionMapping.java代码时碰到的不解

剑胆琴心 发布于 2014/05/14 16:02
阅读 219
收藏 0

@JFinal

在JFinal 1.6的ActionMapping.java源码98行action != null这个条件应该总是成立(95行会new一个action,应该不会为null),意味着会输出警告信息,但实际并未看到警告信息的输出。波总help me 


else if (methodName.equals("index")) {
 String actionKey = controllerKey;
 
 Action action = new Action(controllerKey, actionKey, controllerClass, method, methodName, actionInters, routes.getViewPath(controllerKey));
 action = mapping.put(actionKey, action);
 
 if (action != null) {
 warnning(action.getActionKey(), action.getControllerClass(), action.getMethod());
 }
}



加载中
0
JFinal
JFinal

关键在于第 96 行代码:

action = mapping.put(actionKey, action);

Map 的 put() 方法有返回值,如果本次 actionKey 在put 前已经有对应的 value 则会返回前一个value值

剑胆琴心
剑胆琴心
回复 @JFinal : 明白了,谢谢!
JFinal
JFinal
回复 @剑胆琴心 : index 方法被优先映射,所以可以直接put
剑胆琴心
剑胆琴心
回复 @JFinal : 不知道有什么区别?请指教
JFinal
JFinal
回复 @剑胆琴心 : 为啥第84行是先mapping.contains 然后第90行再put,而第96行却是先put再检查 != null
剑胆琴心
剑胆琴心
哈哈,又学到了一些基础知识,谢谢!
下一页
返回顶部
顶部