Java EL系列 3.1.JUEL表达式工厂
inkfish翻译,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish
)。本文是我学习JUEL同时,对原网站进行的简单的翻译,原网站地址:http://juel.sourceforge.net/guide/basic/factory.html
。说实话,这篇翻译的的确不怎样。
表达式工厂(Expression Factory)
如果要使用EL
,就必须要有一个javax.el.ExpressionFactory
的实例。表达式工厂用于创建多种类型的表达式。JUEL
的表达式工厂实现类是de.odysseus.el.ExpressionFactoryImpl
,获得表达式工厂实例的最方便方法是:
javax.el.ExpressionFactory factory = new de.odysseus.el.ExpressionFactoryImpl();
表达式工厂是线程安全的,允许创建数量不限的表达式。表达式工厂提供下面的操作:
提供类型强制转换(Type coercions)
创造树状值表达式(Tree value expressions)
创建对象值表达式(Object value expressions)
创建树状方法表达式(Tree method expressions)
表达式缓存
每一个工厂实例使用它自己的表达式缓存。缓存的表达式是一个很重要的特性,因为解析是一个相对昂贵的操作。一个表达式缓存映射表达式字符串到他们已经解析过的表达方式(树)。
JUEL
提供一个缓存接口,该接口允许应用使用他们自己的缓存机制。虽然,在绝大多数情形中,JUEL
的默认实现应该是足够好的。默认缓存使用下面两种映射:
主映射是用java.util.LinkedHashMap
实现的,如果缓存的上线达到,那么新的实体(entry)会被添加,并且用最近使用原则(LRU
)从主映射里移除旧的映射关系,并把旧的映射关系保存到二级映射表中。
二级映射表是用java.util.WeakHashMap
来实现的。实体保证生命期至少和他们字符串的强引用一样长。没有任何引用的时候对应的实体才可能被垃圾回收器回收。
默认的构造器使用的缓存容量是1000,你可以通过设置javax.el.cacheSize
属性来自定义缓存大小,比如5000:
java.util.Properties properties = new java.util.Properties();
properties.put("javax.el.cacheSize", "5000");
javax.el.ExpressionFactory factory = new de.odysseus.el.ExpressionFactoryImpl(properties);
使用自己的缓存机制可以参考“高级主题”一节。
类型转换
在计算表达式中,有几个点可能会进行类型转换。
算术或逻辑操作中进行的强制转换
值表达式强制转换成创建时期望的类型
字符
相关文档:
OO的精髓,我以为,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。(cowboy的名言是"抽象就是抽去像的部分",看似调侃,实乃至理)。
设计模式中最基础的是工厂模式(Factory),在我最 ......
转自http://www0.ccidnet.com/tech/guide/2001/10/08/58_3392.html
SAX概念
SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。
与DOM比较而言 ......
Java Web Start 是帮助客户机端应用程序开发的一个新技术,它的独特之处在于将您从关心客户机是如何启动的(从 Web 浏览器或是桌面)中解放出来。另外,该技术提供了一个使 Web 服务器能独立的分发和更新客户机代码的集合部署方案。
Java Web Start 是一个软件技术,它包含了 applet 的可移植性、Servl ......
JAVA事件无非就是键盘事件,鼠标事件,按钮等事件。专业点可以分为语义事件(按钮等到事件)和低层事件(键盘事件,鼠标事件);
下面我简要的总结一下:
1、鼠标事件:点鼠标按钮事它会调用三个监听器方法:mousePressed,mouseReleased,mouseClicked.
鼠标事件提供了mousePressed,mouseClicked,mouseDragged,mouseEnter ......