addCompileOption(String) - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler
addDirective(String, Class<? extends Directive>, boolean) - 类 中的方法cn.aifei.enjoy.Engine
添加自定义指令
建议添加自定义指令时明确指定 keepLineBlank 变量值,其规则如下:
1:keepLineBlank 为 true 时, 该指令所在行的前后空白字符以及末尾字符 '\n' 将会被保留
一般用于具有输出值的指令,例如 #date、#para 等指令
2:keepLineBlank 为 false 时,该指令所在行的前后空白字符以及末尾字符 '\n' 将会被删除
一般用于没有输出值的指令,例如 #for、#if、#else、#end 这种性质的指令
示例:
addDirective("now", NowDirective.class, true)
addDirective(String, Class<? extends Directive>) - 类 中的方法cn.aifei.enjoy.Engine
添加自定义指令,keepLineBlank 使用默认值
addDirective(String, Class<? extends Directive>, boolean) - 类 中的方法cn.aifei.enjoy.EngineConfig
addDirective(String, Class<? extends Directive>) - 类 中的方法cn.aifei.enjoy.EngineConfig
addEnum(Class<? extends Enum<?>>) - 类 中的方法cn.aifei.enjoy.Engine
添加枚举类型,便于在模板中使用
例子:
1:定义枚举类型
public enum UserType {
ADMIN,
USER;
public String hello() {
return "hello";
}
}
2:配置
engine.addEnum(UserType.class);
3:模板中使用
### 以下的对象 u 通过 Controller 中的 setAttr("u", UserType.ADMIN) 传递
#if( u == UserType.ADMIN )
#(UserType.ADMIN)
#(UserType.ADMIN.name())
#(UserType.ADMIN.hello())
#end
addExtensionMethod(Class<?>, Object) - 类 中的静态方法cn.aifei.enjoy.Engine
addExtensionMethod(Class<?>, Class<?>) - 类 中的静态方法cn.aifei.enjoy.Engine
addExtensionMethod(Class<?>, Object) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
addExtensionMethod(Class<?>, Class<?>) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
addFieldGetter(int, FieldGetter) - 类 中的静态方法cn.aifei.enjoy.Engine
添加 FieldGetter 实现类到指定的位置
系统当前默认 FieldGetter 实现类及其位置如下:
GetterMethodFieldGetter ---> 调用 getter 方法取值
RealFieldGetter ---> 直接获取 public 型的 object.field 值
ModelFieldGetter ---> 调用 Model.get(String) 方法取值
RecordFieldGetter ---> 调用 Record.get(String) 方法取值
MapFieldGetter ---> 调用 Map.get(String) 方法取值
ArrayLengthGetter ---> 获取数组长度
根据以上次序,如果要插入 IsMethodFieldGetter 到 GetterMethodFieldGetter
之后的代码如下:
Engine.addFieldGetter(1, new IsMethodFieldGetter());
注:IsMethodFieldGetter 系统已经提供,只是默认没有启用。
addFieldGetter(int, FieldGetter) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
addFieldGetterToFirst(FieldGetter) - 类 中的静态方法cn.aifei.enjoy.Engine
addFieldGetterToFirst(FieldGetter) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
addFieldGetterToLast(FieldGetter) - 类 中的静态方法cn.aifei.enjoy.Engine
addFieldGetterToLast(FieldGetter) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
addForbiddenClass(Class<?>) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
addForbiddenMethod(String) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
addFunction(Define) - 类 中的方法cn.aifei.enjoy.Env
Add template function
addKeyword(String) - 类 中的方法cn.aifei.enjoy.util.JavaKeyword
addSharedFunction(String) - 类 中的方法cn.aifei.enjoy.Engine
Add shared function by file
addSharedFunction(ISource) - 类 中的方法cn.aifei.enjoy.Engine
Add shared function by ISource
addSharedFunction(String...) - 类 中的方法cn.aifei.enjoy.Engine
Add shared function by files
addSharedFunction(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
Add shared function with file
addSharedFunction(String...) - 类 中的方法cn.aifei.enjoy.EngineConfig
Add shared function with files
addSharedFunction(ISource) - 类 中的方法cn.aifei.enjoy.EngineConfig
Add shared function by ISource
addSharedFunctionByString(String) - 类 中的方法cn.aifei.enjoy.Engine
Add shared function by string content
addSharedFunctionByString(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
Add shared function by string content
addSharedMethod(Object) - 类 中的方法cn.aifei.enjoy.Engine
Add shared method from object
addSharedMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.Engine
Add shared method from class
addSharedMethod(Object) - 类 中的方法cn.aifei.enjoy.EngineConfig
Add shared method from object
addSharedMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.EngineConfig
Add shared method from class
addSharedMethod(Object) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
addSharedMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
addSharedObject(String, Object) - 类 中的方法cn.aifei.enjoy.Engine
Add shared object
addSharedObject(String, Object) - 类 中的方法cn.aifei.enjoy.EngineConfig
addSharedStaticMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.Engine
Add shared static method of Class
addSharedStaticMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.EngineConfig
Add shared static method of Class
addSharedStaticMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
addSource(ISource) - 类 中的方法cn.aifei.enjoy.Env
添加本 Template 的 ISource,以及该 Template 使用 include 包含进来的所有 ISource
以便于在 devMode 之下判断该 Template 是否被 modified,进而 reload 该 Template
append(CharSequence) - 类 中的方法cn.aifei.enjoy.io.FastStringWriter
append(CharSequence, int, int) - 类 中的方法cn.aifei.enjoy.io.FastStringWriter
append(char) - 类 中的方法cn.aifei.enjoy.io.FastStringWriter
Arith - cn.aifei.enjoy.expr.ast 中的类
Arithmetic
1:支持 byte short int long float double BigInteger BigDecimal 的 + - * / % 运算
2:支持字符串加法运算
Arith(Sym, Expr, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.Arith
Array - cn.aifei.enjoy.expr.ast 中的类
Array
用法:
1:[1, 2, 3]
2:["a", 1, "b", 2, false, 3.14]
Array(Expr[], Location) - 类 的构造器cn.aifei.enjoy.expr.ast.Array
Array.ArrayListExt - cn.aifei.enjoy.expr.ast 中的类
支持 array.length 表达式
ArrayLengthGetter() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldGetters.ArrayLengthGetter
ArrayListExt(int) - 类 的构造器cn.aifei.enjoy.expr.ast.Array.ArrayListExt
Assign - cn.aifei.enjoy.expr.ast 中的类
Assign
支持三种赋值,其中第二种如果括号中是 ID 或 STR 则演变为第三种是对 map 赋值:
1:ID = expr
2:ID [ expr ] = expr
如果 expr 为 int 或 long 型,则是对 array 赋值
如果 expr 为 ID、STR 型,则是对 map 进行赋值
否则抛异常出来
3:ID [ ID ] = expr 或者 ID [ STR ] = expr
4:支持无限连:id = array[ i = 0 ] = array[1] = 123
Assign(String, Expr, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.Assign
数组赋值表达式
Assign(String, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.Assign
普通赋值表达式
attachment - 类 中的变量cn.aifei.enjoy.stat.Ctrl
cache - 类 中的静态变量cn.aifei.enjoy.expr.ast.FastFieldGetter
Call - cn.aifei.enjoy.stat.ast 中的类
Call 调用模板函数,两种用法:
1:常规调用
#@funcName(p1, p2, ..., pn)
2:安全调用,函数被定义才调用,否则跳过
#@funcName?
Call(String, ExprList, boolean) - 类 的构造器cn.aifei.enjoy.stat.ast.Call
call(Env, Scope, ExprList, Writer) - 类 中的方法cn.aifei.enjoy.stat.ast.Define
真正调用模板函数
call(Stat, Env, Scope, T) - 接口 中的方法cn.aifei.enjoy.Template.Func
CallDirective - cn.aifei.enjoy.ext.directive 中的类
CallDirective 动态调用模板函数
模板函数的名称与参数都可以动态指定,提升模板函数调用的灵活性
例如:
#call(funcName, p1, p2, ..., pn)
其中 funcName,为函数名,p1、p2、pn 为被调用函数所使用的参数
如果希望模板函数不存在时忽略其调用,添加常量值 true 在第一个参数位置即可
例如:
#call(true, funcName, p1, p2, ..., pn)
TODO 后续优化看一下 ast.Call.java
CallDirective() - 类 的构造器cn.aifei.enjoy.ext.directive.CallDirective
Case - cn.aifei.enjoy.stat.ast 中的类
Case
Case(ExprList, StatList, Location) - 类 的构造器cn.aifei.enjoy.stat.ast.Case
CaseSetter - cn.aifei.enjoy.stat.ast 中的接口
CaseSetter
charset - 类 中的变量cn.aifei.enjoy.io.EncoderFactory
CharTable - cn.aifei.enjoy.stat 中的类
CharTable 空间换时间优化字符判断性能
负值参数强转 char 会自动变正值,无需判断负值数组下标
isLetter(EOF) 不会下标越界
CharWriter - cn.aifei.enjoy.io 中的类
CharWriter
CharWriter(int) - 类 的构造器cn.aifei.enjoy.io.CharWriter
classLoader - 类 中的静态变量cn.aifei.enjoy.expr.ast.FastFieldGetter
classLoader - 类 中的变量cn.aifei.enjoy.source.ClassPathSource
ClassPathSource - cn.aifei.enjoy.source 中的类
ClassPathSource 用于从 class path 以及 jar 包之中加载模板内容
注意:
1:如果被加载的文件是 class path 中的普通文件,则该文件支持热加载
2:如果被加载的文件处于 jar 包之中,则该文件不支持热加载,jar 包之中的文件在运行时通常不会被修改
在极少数情况下如果需要对 jar 包之中的模板文件进行热加载,可以通过继承 ClassPathSource
的方式进行扩展
3:Aifei Template Engine 开启热加载需要配置 engine.setDevMode(true)
ClassPathSource(String) - 类 的构造器cn.aifei.enjoy.source.ClassPathSource
ClassPathSource(String, String) - 类 的构造器cn.aifei.enjoy.source.ClassPathSource
ClassPathSource(String, String, String) - 类 的构造器cn.aifei.enjoy.source.ClassPathSource
ClassPathSourceFactory - cn.aifei.enjoy.source 中的类
ClassPathSourceFactory 用于配置 Engine 使用 ClassPathSource 加载模板文件
配置示例:
engine.baseTemplatePath(null); // 清掉 base path
engine.setSourceFactory(new ClassPathSourceFactory());
ClassPathSourceFactory() - 类 的构造器cn.aifei.enjoy.source.ClassPathSourceFactory
clazz - 类 中的变量cn.aifei.enjoy.expr.ast.MethodInfo
clear() - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
clearCache() - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
clearCache() - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
close() - 类 中的方法cn.aifei.enjoy.io.ByteWriter
close() - 类 中的方法cn.aifei.enjoy.io.CharWriter
close() - 类 中的方法cn.aifei.enjoy.io.FastStringWriter
cn.aifei.enjoy - 程序包 cn.aifei.enjoy
cn.aifei.enjoy.expr - 程序包 cn.aifei.enjoy.expr
cn.aifei.enjoy.expr.ast - 程序包 cn.aifei.enjoy.expr.ast
cn.aifei.enjoy.ext.directive - 程序包 cn.aifei.enjoy.ext.directive
cn.aifei.enjoy.ext.extensionmethod - 程序包 cn.aifei.enjoy.ext.extensionmethod
cn.aifei.enjoy.ext.sharedmethod - 程序包 cn.aifei.enjoy.ext.sharedmethod
cn.aifei.enjoy.io - 程序包 cn.aifei.enjoy.io
cn.aifei.enjoy.proxy - 程序包 cn.aifei.enjoy.proxy
cn.aifei.enjoy.source - 程序包 cn.aifei.enjoy.source
cn.aifei.enjoy.stat - 程序包 cn.aifei.enjoy.stat
cn.aifei.enjoy.stat.ast - 程序包 cn.aifei.enjoy.stat.ast
cn.aifei.enjoy.util - 程序包 cn.aifei.enjoy.util
Compare - cn.aifei.enjoy.expr.ast 中的类
Compare
1:支持 byte short int long float double BigInteger BigDecimal 的 == !
Compare(Sym, Expr, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.Compare
compile(ProxyClass) - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler
compiler - 类 中的静态变量cn.aifei.enjoy.expr.ast.FastFieldGetter
compress(StringBuilder) - 类 中的方法cn.aifei.enjoy.stat.Compressor
compress(StringBuilder) - 类 中的方法cn.aifei.enjoy.stat.LineCompressor
compressLine(StringBuilder, int, int, int, StringBuilder) - 类 中的方法cn.aifei.enjoy.stat.LineCompressor
按行压缩
只压缩文本前后的空白字符,文本内部的空白字符不压缩,极大简化压缩算法、提升压缩效率,并且压缩结果也不错
Compressor - cn.aifei.enjoy.stat 中的类
Compressor
压缩规则:
1:为追求性能极致只压缩模板中的静态文本内容,指令输出的内容不压缩,例如 #(blog.content) 输出的内容不会被压缩
由于模板静态内容会被缓存,所以只需压缩一次,性能被最大化
2:多个连续空格字符压缩为一个空格字符
3:空格字符与 '\n' 的组合,压缩为一个 separator 字符。
Compressor() - 类 的构造器cn.aifei.enjoy.stat.Compressor
Compressor(char) - 类 的构造器cn.aifei.enjoy.stat.Compressor
compute(K, BiFunction<? super K, ? super V, ? extends V>) - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
computeIfAbsent(K, Function<? super K, ? extends V>) - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
computeIfPresent(K, BiFunction<? super K, ? super V, ? extends V>) - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
Const - cn.aifei.enjoy.expr.ast 中的类
STR INT LONG FLOAT DOUBLE TRUE FALSE NULL
Const(Sym, Object) - 类 的构造器cn.aifei.enjoy.expr.ast.Const
INT LONG FLOAT DOUBLE 常量已在 NumTok 中转换成了确切的类型,无需再次转换
contains(Class<? extends FieldGetter>) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
判断是否包含某个 FieldGetter
contains(String) - 类 中的方法cn.aifei.enjoy.util.JavaKeyword
Continue - cn.aifei.enjoy.stat.ast 中的类
Continue
create(String) - 类 中的静态方法cn.aifei.enjoy.Engine
Create engine with engine name managed by Aifei
create(String, Consumer<Engine>) - 类 中的静态方法cn.aifei.enjoy.Engine
Create engine with engine name managed by Aifei
Example:
Engine engine = Engine.create("myEngine", e -> {
e.setDevMode(true);
e.setToClassPathSourceFactory();
});
engine.getTemplate("template.html").render(System.out);
>
createIfAbsent(String, Consumer<Engine>) - 类 中的静态方法cn.aifei.enjoy.Engine
Create engine if absent with engine name managed by Aifei
Example:
Engine engine = Engine.createIfAbsent("myEngine", e -> {
e.setDevMode(true);
e.setToClassPathSourceFactory();
});
engine.getTemplate("template.html").render(System.out);
>
createProxy(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FastFieldGetter
Ctrl - cn.aifei.enjoy.stat 中的类
Ctrl
封装 AST 执行过程中的控制状态,避免使用 Scope.data 保存控制状态
从而污染用户空间数据,目前仅用于 nullSafe、break、continue、return 控制
未来可根据需求引入更多控制状态
Ctrl() - 类 的构造器cn.aifei.enjoy.stat.Ctrl
FALSE - 类 中的静态变量cn.aifei.enjoy.expr.ast.Const
FastFieldGetter - cn.aifei.enjoy.expr.ast 中的类
使用 aifei proxy 机制消除 java.lang.reflect.Method.invoke(...)
FastFieldGetter(FastFieldGetter.Proxy, Method) - 类 的构造器cn.aifei.enjoy.expr.ast.FastFieldGetter
FastFieldGetter() - 类 的构造器cn.aifei.enjoy.expr.ast.FastFieldGetter
仅用于配置 Engine.addFieldGetter(0, new FastFieldGetter());
FastFieldGetter.Proxy - cn.aifei.enjoy.expr.ast 中的接口
代理接口
FastFieldKeyBuilder() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldKeyBuilder.FastFieldKeyBuilder
FastMethodKeyBuilder() - 类 的构造器cn.aifei.enjoy.expr.ast.MethodKeyBuilder.FastMethodKeyBuilder
FastStringWriter - cn.aifei.enjoy.io 中的类
FastStringWriter
由 JDK 中 Writer 改造而来,在其基础之上做了如下改变:
1:添加 char[] value 直接保存 char 值
2:添加 int len 记录数据长度
3:去掉 synchronized 操作
4:添加 MAX_BUFFER_SIZE,限定 value 被重用的最大长度
5:去掉了 close() 方法声明中的 throws IOException,并添加缓存回收逻辑
FastStringWriter(int) - 类 的构造器cn.aifei.enjoy.io.FastStringWriter
FastStringWriter() - 类 的构造器cn.aifei.enjoy.io.FastStringWriter
Field - cn.aifei.enjoy.expr.ast 中的类
Field
field 表达式取值优先次序,以 user.name 为例
1:假如 user.getName() 存在,则优先调用
2:假如 user 具有 public name 属性,则取 user.name 属性值
3:假如 user 为 Model 子类,则调用 user.get("name")
4:假如 user 为 Record,则调用 user.get("name")
5:假如 user 为 Map,则调用 user.get("name")
Field(Expr, String, boolean, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.Field
field - 类 中的变量cn.aifei.enjoy.expr.ast.FieldGetters.RealFieldGetter
FieldGetter - cn.aifei.enjoy.expr.ast 中的类
FieldGetter 用于支持 target.field 表达式的取值,
以及支持用户扩展自定义的 FieldGetter 实现方式
FieldGetter() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldGetter
FieldGetters - cn.aifei.enjoy.expr.ast 中的类
FieldGetters 封装官方默认 FieldGetter 实现
FieldGetters() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldGetters
FieldGetters.ArrayLengthGetter - cn.aifei.enjoy.expr.ast 中的类
ArrayLengthGetter
获取数组长度: array.length
FieldGetters.GetterMethodFieldGetter - cn.aifei.enjoy.expr.ast 中的类
GetterMethodFieldGetter
使用 getter 方法获取 target.field 表达式的值
FieldGetters.IsMethodFieldGetter - cn.aifei.enjoy.expr.ast 中的类
IsMethodFieldGetter
使用 target.isXxx() 方法获取值,默认不启用该功能,用户可以通过如下方式启用:
Engine.addLastFieldGetter(new FieldGetters.IsMethodFieldGetter());
FieldGetters.MapFieldGetter - cn.aifei.enjoy.expr.ast 中的类
MapFieldGetter
使用 Map.get(Object) 获取值
FieldGetters.NullFieldGetter - cn.aifei.enjoy.expr.ast 中的类
NullFieldGetter
用于消除 FieldKit.getFieldGetter(...)
FieldGetters.RealFieldGetter - cn.aifei.enjoy.expr.ast 中的类
RealFieldGetter
使用 target.field 获取值
FieldKey(int, long) - 类 的构造器cn.aifei.enjoy.expr.ast.FieldKeyBuilder.FieldKey
FieldKeyBuilder - cn.aifei.enjoy.expr.ast 中的类
FieldKeyBuilder
用于生成缓存 FieldGetter 的 key
FieldKeyBuilder() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldKeyBuilder
FieldKeyBuilder.FastFieldKeyBuilder - cn.aifei.enjoy.expr.ast 中的类
FastFieldKeyBuilder
FieldKeyBuilder.FieldKey - cn.aifei.enjoy.expr.ast 中的类
FieldKey
FieldKey 用于封装 targetClass、fieldName 这两部分的 hash 值,
确保不会出现 key 值碰撞
这两部分 hash 值在不同 class 与 field 的组合下出现碰撞的
概率完全可以忽略不计
备忘:
可以考虑用 ThreadLocal 重用 FieldKey 对象,但要注意放入 Map fieldGetterCache
中的 FieldKey 对象需要 clone 出来,确保线程安全。
FieldKeyBuilder.StrictFieldKeyBuilder - cn.aifei.enjoy.expr.ast 中的类
StrictFieldKeyBuilder
FieldKit - cn.aifei.enjoy.expr.ast 中的类
FieldKit
FieldKit() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldKit
fileName - 类 中的变量cn.aifei.enjoy.source.ClassPathSource
fileObjects - 类 中的变量cn.aifei.enjoy.proxy.ProxyCompiler.MyJavaFileManager
FileSource - cn.aifei.enjoy.source 中的类
FileSource 用于从普通文件中加载模板内容
FileSource(String, String, String) - 类 的构造器cn.aifei.enjoy.source.FileSource
FileSource(String, String) - 类 的构造器cn.aifei.enjoy.source.FileSource
FileSourceFactory - cn.aifei.enjoy.source 中的类
FileSourceFactory 用于配置 Engine 使用 FileSource 加载模板文件
注意:
FileSourceFactory 为模板引擎默认配置
FileSourceFactory() - 类 的构造器cn.aifei.enjoy.source.FileSourceFactory
finalFileName - 类 中的变量cn.aifei.enjoy.source.ClassPathSource
findClass(String) - 类 中的方法cn.aifei.enjoy.proxy.ProxyClassLoader
firstCharToLowerCase(String) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
首字母变小写
firstCharToUpperCase(String) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
首字母变大写
FLOAT - 类 中的静态变量cn.aifei.enjoy.expr.ast.Arith
FloatExt - cn.aifei.enjoy.ext.extensionmethod 中的类
针对 java.lang.Float 的扩展方法
用法:
#if(value.toInt() == 123)
FloatExt() - 类 的构造器cn.aifei.enjoy.ext.extensionmethod.FloatExt
FloatingDecimal - cn.aifei.enjoy.io 中的类
FloatingDecimal(double) - 类 的构造器cn.aifei.enjoy.io.FloatingDecimal
FloatingDecimal(float) - 类 的构造器cn.aifei.enjoy.io.FloatingDecimal
FloatingWriter - cn.aifei.enjoy.io 中的类
FloatingWriter
FloatingWriter() - 类 的构造器cn.aifei.enjoy.io.FloatingWriter
flush() - 类 中的方法cn.aifei.enjoy.io.ByteWriter
flush() - 类 中的方法cn.aifei.enjoy.io.CharWriter
flush() - 类 中的方法cn.aifei.enjoy.io.FastStringWriter
flush() - 类 中的方法cn.aifei.enjoy.io.Writer
fnv1a64(String) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
FNV_OFFSET_BASIS_64 - 类 中的静态变量cn.aifei.enjoy.util.HashKit
FNV_PRIME_64 - 类 中的静态变量cn.aifei.enjoy.util.HashKit
For - cn.aifei.enjoy.stat.ast 中的类
For 循环控制,支持 List、Map、数组、Collection、Iterator、Iterable
Enumeration、null 以及任意单个对象的迭代,简单说是支持所有对象迭代
主要用法:
1:#for(item : list) #(item) #end
2:#for(item : list) #(item) #else content #end
3:#for(i=0; i<9; i++) #(item) #end
4:#for(i=0; i<9; i++) #(item) #else content #end
For(ForCtrl, StatList, Stat) - 类 的构造器cn.aifei.enjoy.stat.ast.For
ForCtrl - cn.aifei.enjoy.expr.ast 中的类
forCtrl : ID : expression
| exprList?
ForCtrl(Id, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.ForCtrl
ID : expr
ForCtrl(ExprList, Expr, ExprList, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.ForCtrl
exprList?
ForEntry - cn.aifei.enjoy.stat.ast 中的类
ForEntry 包装 HashMap、LinkedHashMap 等 Map 类型的 Entry 对象
ForEntry() - 类 的构造器cn.aifei.enjoy.stat.ast.ForEntry
ForIteratorStatus - cn.aifei.enjoy.stat.ast 中的类
ForIteratorStatus
封装 #for( id : expr) 迭代语句状态,便于模板中获取
使用以下表达式可以模板中获取迭代状态:
for.size 被迭代集合元素数量,不支持 Iterator 与 Iterable
for.index 从 0 下始的下标
for.count 从 1 开始的计数器
for.first 是否第一个元素
for.last 是否最后一个元素
for.odd 是否第奇数个元素
for.even 是否第偶数个元素
for.outer 获取外层 for 对象,便于获取外层 for 循环状态
例如: for.outer.index
ForIteratorStatus(Object, Object, Location) - 类 的构造器cn.aifei.enjoy.stat.ast.ForIteratorStatus
ForLoopStatus - cn.aifei.enjoy.stat.ast 中的类
ForLoopStatus
封装 #for( init; cond; update) 循环的状态,便于模板中获取
如下表达式可从模板中获取循环状态:
for.index 从 0 下始的下标
for.count 从 1 开始的计数器
for.first 是否第一个元素
for.odd 是否第奇数个元素
for.even 是否第偶数个元素
for.outer 获取外层 for 对象,便于获取外层 for 循环状态
例如: for.outer.index
注意:比迭代型循环语句少支持两个状态取值表达式:for.size、for.last
ForLoopStatus(Object) - 类 的构造器cn.aifei.enjoy.stat.ast.ForLoopStatus
format(LocalDateTime, String) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
按指定 pattern 将 LocalDateTime 转换成 String
例如:format(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss")
format(LocalDateTime) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
format(LocalDate, String) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
按指定 pattern 将 LocalDate 转换成 String
format(LocalTime, String) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
按指定 pattern 将 LocalTime 转换成 String
format(Date, String) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
按指定 pattern 将 Date 转换成 String
例如:format(new Date(), "yyyy-MM-dd HH:mm:ss")
format(Date) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
formats - 类 中的变量cn.aifei.enjoy.io.Writer
funcNameExpr - 类 中的变量cn.aifei.enjoy.ext.directive.CallDirective
functionMap - 类 中的变量cn.aifei.enjoy.Env
generateRandomStr(int) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
generateSalt(int) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
md5 128bit 16bytes
sha1 160bit 20bytes
sha256 256bit 32bytes
sha384 384bit 48bytes
sha512 512bit 64bytes
generateSaltForSha256() - 类 中的静态方法cn.aifei.enjoy.util.HashKit
generateSaltForSha512() - 类 中的静态方法cn.aifei.enjoy.util.HashKit
generator - 类 中的静态变量cn.aifei.enjoy.expr.ast.FastFieldGetter
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FastFieldGetter
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetter
获取 target.fieldName 表达式的值
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.ArrayLengthGetter
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.GetterMethodFieldGetter
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.IsMethodFieldGetter
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.MapFieldGetter
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.NullFieldGetter
get(Object, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.RealFieldGetter
get(int) - 类 中的方法cn.aifei.enjoy.expr.ast.RangeArray.RangeList
get(Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
获取变量
自内向外在作用域栈中查找变量,返回最先找到的变量
getActualExpr() - 类 中的方法cn.aifei.enjoy.expr.ast.ExprList
持有 ExprList 的指令可以通过此方法提升 AST 执行性能
1:当 exprArray.length == 1 时返回 exprArray[0]
2:当 exprArray.length == 0 时返回 NullExpr
3:其它情况返回 ExprList 自身
意义在于,当满足前面两个条件时,避免掉了 ExprList.eval(...)
getActualStat() - 类 中的方法cn.aifei.enjoy.stat.ast.StatList
持有 StatList 的指令可以通过此方法提升 AST 执行性能
1:当 statArray.length > 1 时返回 StatList 自身
2:当 statArray.length == 1 时返回 statArray[0]
3:其它情况返回 NullStat
意义在于,当满足前面两个条件时,避免掉了 StatList.exec(...)
getAttachment() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
getBaseTemplatePath() - 类 中的方法cn.aifei.enjoy.Engine
getBaseTemplatePath() - 类 中的方法cn.aifei.enjoy.EngineConfig
getBoolean() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getByteCode() - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
getByteCode() - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler.MyJavaFileObject
getBytes() - 接口 中的方法cn.aifei.enjoy.io.IWritable
供 OutputStream 模式下的 ByteWrite 使用
getBytes() - 类 中的方法cn.aifei.enjoy.stat.ast.Text
getByteWriter(OutputStream) - 类 中的方法cn.aifei.enjoy.io.WriterBuffer
getCacheKey() - 类 中的方法cn.aifei.enjoy.source.ClassPathSource
getCacheKey() - 类 中的方法cn.aifei.enjoy.source.FileSource
getCacheKey() - 接口 中的方法cn.aifei.enjoy.source.ISource
cache key used to cache, return null if do not cache the template
注意:如果不希望缓存从该 ISource 解析出来的 Template 对象
让 getCacheKey() 返回 null 值即可
getCacheKey() - 类 中的方法cn.aifei.enjoy.source.StringSource
getCharContent(boolean) - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler.MyJavaFileObject
getChars(char[]) - 类 中的方法cn.aifei.enjoy.io.FloatingDecimal
getChars() - 接口 中的方法cn.aifei.enjoy.io.IWritable
供 Writer 模式下的 CharWrite 使用
getChars() - 类 中的方法cn.aifei.enjoy.stat.ast.Text
getCharWriter(Writer) - 类 中的方法cn.aifei.enjoy.io.WriterBuffer
getClassLoader() - 类 中的方法cn.aifei.enjoy.source.ClassPathSource
getClassPath() - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler
兼容 tomcat 丢失 class path,否则无法编译
getClazz() - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
getCompressor() - 类 中的方法cn.aifei.enjoy.EngineConfig
getCond() - 类 中的方法cn.aifei.enjoy.expr.ast.ForCtrl
getContent() - 类 中的方法cn.aifei.enjoy.source.ClassPathSource
getContent() - 类 中的方法cn.aifei.enjoy.source.FileSource
getContent() - 接口 中的方法cn.aifei.enjoy.source.ISource
content of ISource
getContent() - 类 中的方法cn.aifei.enjoy.source.StringSource
getContent() - 类 中的方法cn.aifei.enjoy.stat.ParaToken
getCount() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getCount() - 类 中的方法cn.aifei.enjoy.stat.ast.ForLoopStatus
getCtrl() - 类 中的方法cn.aifei.enjoy.stat.Scope
getData() - 类 中的方法cn.aifei.enjoy.stat.Scope
获取本层作用域 data,可能为 null 值
getDateFormat(String) - 类 中的方法cn.aifei.enjoy.io.DateFormats
getDatePattern() - 类 中的方法cn.aifei.enjoy.Engine
getDatePattern() - 类 中的方法cn.aifei.enjoy.EngineConfig
getDateTimeFormatter(String) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
getDevMode() - 类 中的方法cn.aifei.enjoy.Engine
getDirective(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
getDirectiveNames() - 类 中的方法cn.aifei.enjoy.Engine
获取当前 Engine 对象所有指令名称
getDouble() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getEncoder() - 类 中的方法cn.aifei.enjoy.io.EncoderFactory
getEncoder() - 类 中的方法cn.aifei.enjoy.io.JdkEncoderFactory
getEncoding() - 类 中的方法cn.aifei.enjoy.Engine
getEncoding() - 类 中的方法cn.aifei.enjoy.EngineConfig
getEncoding() - 类 中的方法cn.aifei.enjoy.source.ClassPathSource
getEncoding() - 类 中的方法cn.aifei.enjoy.source.FileSource
getEncoding() - 接口 中的方法cn.aifei.enjoy.source.ISource
encoding of content
getEncoding() - 类 中的方法cn.aifei.enjoy.source.StringSource
getEngine() - 类 中的静态方法cn.aifei.enjoy.util.ElKit
getEngineConfig() - 类 中的方法cn.aifei.enjoy.Engine
getEngineConfig() - 类 中的方法cn.aifei.enjoy.Env
getEven() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getEven() - 类 中的方法cn.aifei.enjoy.stat.ast.ForLoopStatus
getExpr(int) - 类 中的方法cn.aifei.enjoy.expr.ast.ExprList
getExpr() - 类 中的方法cn.aifei.enjoy.expr.ast.ForCtrl
getExprArray() - 类 中的方法cn.aifei.enjoy.expr.ast.ExprList
getFastStringWriter() - 类 中的方法cn.aifei.enjoy.io.WriterBuffer
getFieldGetter(Object, Class<?>, String) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
getFieldKey(Class<?>, long) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldKeyBuilder.FastFieldKeyBuilder
getFieldKey(Class<?>, long) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldKeyBuilder
getFieldKey(Class<?>, long) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldKeyBuilder.StrictFieldKeyBuilder
getFileName() - 类 中的方法cn.aifei.enjoy.source.FileSource
getFinalFileName() - 类 中的方法cn.aifei.enjoy.source.FileSource
getFirst() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getFirst() - 类 中的方法cn.aifei.enjoy.stat.ast.ForLoopStatus
getFirstExpr() - 类 中的方法cn.aifei.enjoy.expr.ast.ExprList
getFloat() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getFunction(String) - 类 中的方法cn.aifei.enjoy.Env
Get function of current template first, getting shared function if null before
getFunction(String) - 类 中的方法cn.aifei.enjoy.ext.directive.RenderDirective.SubEnv
接管父类 getFunction(),先从子模板中找模板函数,找不到再去父模板中找
getFunctionName() - 类 中的方法cn.aifei.enjoy.stat.ast.Define
getGlobal(Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
获取全局变量
全局作用域是指本次请求的整个 template
getId() - 类 中的方法cn.aifei.enjoy.expr.ast.Assign
获取 assign 表达式左侧标识符 id
在自定义指令中得到 id 值,可以得知该赋值表达式是针对哪个变量在操作,有助于扩展
需求来源:https://jfinal.com/share/379
getId() - 类 中的方法cn.aifei.enjoy.expr.ast.ForCtrl
getId() - 类 中的方法cn.aifei.enjoy.expr.ast.Id
getIndex() - 类 中的方法cn.aifei.enjoy.expr.ast.Assign
getIndex() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getIndex() - 类 中的方法cn.aifei.enjoy.stat.ast.ForLoopStatus
getInit() - 类 中的方法cn.aifei.enjoy.expr.ast.ForCtrl
getInstance() - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKeyBuilder
getInstance() - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKeyBuilder
getInt() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getJavaFileForInput(JavaFileManager.Location, String, JavaFileObject.Kind) - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler.MyJavaFileManager
getJavaFileForOutput(JavaFileManager.Location, String, JavaFileObject.Kind, FileObject) - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler.MyJavaFileManager
getKeepLineBlankDirectives() - 类 中的方法cn.aifei.enjoy.EngineConfig
getKey() - 类 中的方法cn.aifei.enjoy.expr.ast.MethodInfo
getKey() - 类 中的方法cn.aifei.enjoy.stat.ast.ForEntry
getLast() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getLastExpr() - 类 中的方法cn.aifei.enjoy.expr.ast.ExprList
getLastModified() - 类 中的方法cn.aifei.enjoy.source.ClassPathSource
getLength() - 类 中的方法cn.aifei.enjoy.expr.ast.Array.ArrayListExt
getLocal(Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
获取局部变量
getLocation() - 类 中的方法cn.aifei.enjoy.stat.ast.Stat
getLong() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getMapOfValue(Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
自内向外在作用域栈中查找变量,获取变量所在的 Map,主要用于 IncDec
getMethod(Class<?>, String, Object[]) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
getMethodKey(Class<?>, String, Class<?>[]) - 类 中的方法cn.aifei.enjoy.expr.ast.MethodKeyBuilder.FastMethodKeyBuilder
getMethodKey(Class<?>, String, Class<?>[]) - 类 中的方法cn.aifei.enjoy.expr.ast.MethodKeyBuilder
生成指定 class、指定方法名、指定方法形参类型的 key 值,用于缓存
getMethodKey(Class<?>, String, Class<?>[]) - 类 中的方法cn.aifei.enjoy.expr.ast.MethodKeyBuilder.StrictMethodKeyBuilder
getMethodSignature(Method) - 类 中的静态方法cn.aifei.enjoy.util.ReflectKit
getName() - 类 中的方法cn.aifei.enjoy.Engine
getName() - 类 中的方法cn.aifei.enjoy.expr.ast.MethodInfo
getName() - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
getNumber() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getNumberValue() - 类 中的方法cn.aifei.enjoy.expr.NumTok
getOdd() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getOdd() - 类 中的方法cn.aifei.enjoy.stat.ast.ForLoopStatus
getOptions() - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler
getOuter() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getOuter() - 类 中的方法cn.aifei.enjoy.stat.ast.ForLoopStatus
getOutputDirective(ExprList, Location) - 类 中的方法cn.aifei.enjoy.EngineConfig
getOutputDirective(ExprList, Location) - 类 中的方法cn.aifei.enjoy.stat.OutputDirectiveFactory
getParameterNames() - 类 中的方法cn.aifei.enjoy.stat.ast.Define
getParameterTypes() - 类 中的方法cn.aifei.enjoy.expr.ast.MethodInfo
getParentClassLoader() - 类 中的静态方法cn.aifei.enjoy.proxy.ProxyClassLoader
getPkg() - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
getRandomUUID() - 类 中的静态方法cn.aifei.enjoy.util.StrKit
getRight() - 类 中的方法cn.aifei.enjoy.expr.ast.Assign
getRootData() - 类 中的方法cn.aifei.enjoy.stat.Scope
获取顶层作用域 data,可能为 null 值
getRoundingMode() - 类 中的方法cn.aifei.enjoy.EngineConfig
getRow() - 类 中的方法cn.aifei.enjoy.stat.Location
getSharedFunctionNames() - 类 中的方法cn.aifei.enjoy.Engine
获取当前 Engine 对象所有共享模板函数名称
getSharedMethodInfo(String, Object[]) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
getSharedMethodKit() - 类 中的方法cn.aifei.enjoy.EngineConfig
getSharedObject(String) - 类 中的方法cn.aifei.enjoy.stat.Scope
获取共享对象
getSharedObjectMap() - 类 中的方法cn.aifei.enjoy.EngineConfig
getSimpleDateFormat(String) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
getSize() - 类 中的方法cn.aifei.enjoy.stat.ast.ForIteratorStatus
getSource(String, String, String) - 类 中的方法cn.aifei.enjoy.source.ClassPathSourceFactory
getSource(String, String, String) - 类 中的方法cn.aifei.enjoy.source.FileSourceFactory
getSource(String, String, String) - 接口 中的方法cn.aifei.enjoy.source.ISourceFactory
getSourceCode() - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
getSourceFactory() - 类 中的方法cn.aifei.enjoy.Engine
getSourceFactory() - 类 中的方法cn.aifei.enjoy.EngineConfig
getStat(int) - 类 中的方法cn.aifei.enjoy.stat.ast.StatList
getStr() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getSubFileName(String, String) - 类 中的静态方法cn.aifei.enjoy.stat.ast.Include
获取在父模板之下子模板的最终文件名,子模板目录相对于父模板文件目录来确定
以 "/" 打头则以 baseTemplatePath 为根,否则以父文件所在路径为根
getTarget() - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
是否需要代理
getTemplate(String) - 类 中的方法cn.aifei.enjoy.Engine
Get template by file name
getTemplate(ISource) - 类 中的方法cn.aifei.enjoy.Engine
Get template by implementation of ISource
getTemplateByString(String) - 类 中的方法cn.aifei.enjoy.Engine
Get template by string content and do not cache the template
getTemplateByString(String, boolean) - 类 中的方法cn.aifei.enjoy.Engine
Get template by string content
重要:StringSource 中的 cacheKey = content,也即 cacheKey
与 content 有紧密的对应关系,当 content 发生变化时 cacheKey 值也相应变化
因此,原先 cacheKey 所对应的 Template 缓存对象已无法被获取,当 getTemplateByString(String)
的 String 参数的数量不确定时会引发内存泄漏
当 getTemplateByString(String, boolean) 中的 String 参数的
数量可控并且确定时,才可对其使用缓存
getTemplateByString(String, String) - 类 中的方法cn.aifei.enjoy.Engine
getTemplateCacheSize() - 类 中的方法cn.aifei.enjoy.Engine
getTemplateFile() - 类 中的方法cn.aifei.enjoy.stat.Location
getterMethod - 类 中的变量cn.aifei.enjoy.expr.ast.FastFieldGetter
getterMethod - 类 中的变量cn.aifei.enjoy.expr.ast.FieldGetters.GetterMethodFieldGetter
GetterMethodFieldGetter(Method) - 类 的构造器cn.aifei.enjoy.expr.ast.FieldGetters.GetterMethodFieldGetter
getUpdate() - 类 中的方法cn.aifei.enjoy.expr.ast.ForCtrl
getURLClassLoader() - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler
getValue() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
getValue(Object, String) - 接口 中的方法cn.aifei.enjoy.expr.ast.FastFieldGetter.Proxy
getValue() - 类 中的方法cn.aifei.enjoy.stat.ast.ForEntry
newInstance(Class<?>) - 类 中的静态方法cn.aifei.enjoy.util.ReflectKit
notBlank(String) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
notBlank(String...) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
notEmpty(Object) - 类 中的方法cn.aifei.enjoy.ext.sharedmethod.SharedMethodLib
notJump() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
notNull() - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetter
仅仅 NullFieldGetter 会覆盖此方法并返回 false
用于消除 FieldKit.getFieldGetter(...)
notNull() - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.NullFieldGetter
notNull() - 类 中的方法cn.aifei.enjoy.expr.ast.MethodInfo
仅仅 NullMethodInfo 会覆盖此方法并返回 false
1:MethodKit.getMethod(...)
notNull() - 类 中的方法cn.aifei.enjoy.expr.ast.NullMethodInfo
notNull(Object...) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
notNullSafe() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
now(String) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
按指定 pattern 将当前时间转换成 String
例如:now("yyyy-MM-dd HH:mm:ss")
now() - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
按 pattern "yyyy-MM-dd HH:mm:ss" 将当前时间转换成 String
NowDirective - cn.aifei.enjoy.ext.directive 中的类
根据 datePattern 参数输出当前时间,未指定 datePattern 参数时默认使用以下配置
env.getEngineConfig().getDatePattern()
注意该指令需要配置才能使用:
engine.addDirective("now", NowDirective.class, true);
例子:
1:#now()
2:#now("HH:mm:ss")
3:#now("yyyy-MM-dd HH:mm:ss")
NowDirective() - 类 的构造器cn.aifei.enjoy.ext.directive.NowDirective
nowWithMillisecond() - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
按 pattern "yyyyMMddHHmmssSSS" 将当前时间精确到毫秒转换成 String,常用于生成订单号等等单据的部分字符
NULL - 类 中的静态变量cn.aifei.enjoy.expr.ast.Const
NULL_EXPR - 类 中的静态变量cn.aifei.enjoy.expr.ast.ExprList
NULL_EXPR_ARRAY - 类 中的静态变量cn.aifei.enjoy.expr.ast.ExprList
NULL_EXPR_LIST - 类 中的静态变量cn.aifei.enjoy.expr.ast.ExprList
NULL_OBJECT_ARRAY - 类 中的静态变量cn.aifei.enjoy.expr.ast.ExprList
NULL_STAT - 类 中的静态变量cn.aifei.enjoy.stat.ast.StatList
NULL_STAT_ARRAY - 类 中的静态变量cn.aifei.enjoy.stat.ast.StatList
NullExpr - cn.aifei.enjoy.expr.ast 中的类
NullExpr
NullFieldGetter() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldGetters.NullFieldGetter
NullMethodInfo - cn.aifei.enjoy.expr.ast 中的类
NullMethodInfo
1:MethodKit.getMethod(...)
NullMethodInfo() - 类 的构造器cn.aifei.enjoy.expr.ast.NullMethodInfo
NullSafe - cn.aifei.enjoy.expr.ast 中的类
NullSafe
在原则上只支持具有动态特征的用法,例如:方法调用、字段取值、Map 与 List 取值
而不支持具有静态特征的用法,例如:static method 调用、shared method 调用
用法:
#( seoTitle ??
NullSafe(Expr, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.NullSafe
nullSafe - 类 中的变量cn.aifei.enjoy.ext.directive.CallDirective
NullStat - cn.aifei.enjoy.stat.ast 中的类
NullStat
NumberDirective - cn.aifei.enjoy.ext.directive 中的类
#number 数字格式化输出指令
优化时要注意 DecimalFormat 并非线程安全
两种用法:
1:#number(n) 用默认 pattern 输出变量中的值
2:#number(n, "#.##") 用第二个参数指定的 pattern 输出变量中的值
注意:
1:pattern 的使用与 java.text.DecimalFormat 的完全一样
在拿不定主意的时候可以在搜索引擎中搜索关键字:DecimalFormat
2:#number 指令中的参数可以是变量,例如:#number(n, p) 中的 n 与 p 可以全都是变量
示例:
#number(3.1415926, "#.##")
#number(0.9518, "#.##%")
#number(300000, "光速为每秒 ,### 公里。")
NumberDirective() - 类 的构造器cn.aifei.enjoy.ext.directive.NumberDirective
NumTok - cn.aifei.enjoy.expr 中的类
NumToken 封装所有数值类型,并进行类型转换,以便尽早抛出异常
java 数值类型规则:
1:科学计数法默认为 double 类型,通过 Object v = 123E1; 测试可知
2:出现小数点的浮点数默认为 double 类型,无需指定 D/d 后缀。
RandomDirective - cn.aifei.enjoy.ext.directive 中的类
输出 int 型随机数
RandomDirective() - 类 的构造器cn.aifei.enjoy.ext.directive.RandomDirective
RangeArray - cn.aifei.enjoy.expr.ast 中的类
RangeArray : [expr .. expr]
用法:
1:[1..3]
2:[3..1]
RangeArray(Expr, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.RangeArray
array : '[' exprList ?
RangeArray.RangeList - cn.aifei.enjoy.expr.ast 中的类
RangeList(int, int, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.RangeArray.RangeList
RealFieldGetter(Field) - 类 的构造器cn.aifei.enjoy.expr.ast.FieldGetters.RealFieldGetter
ReflectKit - cn.aifei.enjoy.util 中的类
反射工具类
ReflectKit() - 类 的构造器cn.aifei.enjoy.util.ReflectKit
remove(String) - 类 中的静态方法cn.aifei.enjoy.Engine
Remove engine with engine name managed by Aifei
remove(Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
移除变量
自内向外在作用域栈中查找变量,移除最先找到的变量
remove(Object) - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
removeAllTemplateCache() - 类 中的方法cn.aifei.enjoy.Engine
Remove all template cache
removeDirective(String) - 类 中的方法cn.aifei.enjoy.Engine
Remove directive
removeDirective(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
removeExtensionMethod(Class<?>, Object) - 类 中的静态方法cn.aifei.enjoy.Engine
removeExtensionMethod(Class<?>, Class<?>) - 类 中的静态方法cn.aifei.enjoy.Engine
removeExtensionMethod(Class<?>, Object) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
removeExtensionMethod(Class<?>, Class<?>) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
removeFieldGetter(Class<? extends FieldGetter>) - 类 中的静态方法cn.aifei.enjoy.Engine
removeFieldGetter(Class<? extends FieldGetter>) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
removeForbiddenClass(Class<?>) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
removeForbiddenMethod(String) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKit
removeGlobal(Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
移除全局变量
全局作用域是指本次请求的整个 template
removeKeyword(String) - 类 中的方法cn.aifei.enjoy.util.JavaKeyword
removeLocal(Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
移除局部变量
removeSharedMethod(String) - 类 中的方法cn.aifei.enjoy.Engine
Remove shared Method by method name
removeSharedMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.Engine
Remove shared Method of the Class
removeSharedMethod(Method) - 类 中的方法cn.aifei.enjoy.Engine
Remove shared Method
removeSharedMethod(String, Class<?>...) - 类 中的方法cn.aifei.enjoy.Engine
Remove shared Method
removeSharedMethod(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
Remove shared Method with method name
removeSharedMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.EngineConfig
Remove shared Method of the Class
removeSharedMethod(Method) - 类 中的方法cn.aifei.enjoy.EngineConfig
Remove shared Method
removeSharedMethod(String, Class<?>...) - 类 中的方法cn.aifei.enjoy.EngineConfig
Remove shared Method
removeSharedMethod(String) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
removeSharedMethod(Class<?>) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
removeSharedMethod(Method) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
removeSharedMethod(String, Class<?>...) - 类 中的方法cn.aifei.enjoy.expr.ast.SharedMethodKit
removeSharedObject(String) - 类 中的方法cn.aifei.enjoy.Engine
removeSharedObject(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
removeTemplateCache(String) - 类 中的方法cn.aifei.enjoy.Engine
Remove template cache by cache key
render(Map<?, ?>, OutputStream) - 类 中的方法cn.aifei.enjoy.Template
渲染到 OutputStream 中去
render(OutputStream) - 类 中的方法cn.aifei.enjoy.Template
支持无 data 参数,渲染到 OutputStream 中去
适用于数据在模板中通过表达式和语句直接计算得出等等应用场景
render(Map<?, ?>, Writer) - 类 中的方法cn.aifei.enjoy.Template
渲染到 Writer 中去
render(Writer) - 类 中的方法cn.aifei.enjoy.Template
支持无 data 参数,渲染到 Writer 中去
适用于数据在模板中通过表达式和语句直接计算得出等等应用场景
render(Map<?, ?>, File) - 类 中的方法cn.aifei.enjoy.Template
渲染到 File 中去
适用于代码生成器类似应用场景
render(Map<?, ?>, String) - 类 中的方法cn.aifei.enjoy.Template
渲染到 String fileName 参数所指定的文件中去
适用于代码生成器类似应用场景
render(Map<?, ?>, OutputStream, Template.Func<ByteWriter>) - 类 中的方法cn.aifei.enjoy.Template
渲染到 OutputStream 中去
render(Map<?, ?>, Writer, Template.Func<CharWriter>) - 类 中的方法cn.aifei.enjoy.Template
渲染到 Writer 中去
render(Map<?, ?>, File, Template.Func<ByteWriter>) - 类 中的方法cn.aifei.enjoy.Template
渲染到 File 中去
适用于代码生成器类似应用场景
render(Map<?, ?>, OutputStream, boolean) - 类 中的方法cn.aifei.enjoy.Template
渲染到 OutputStream 中去,autoCloseOutputStream 指定是否自动关闭 OutputStream
render(Map<?, ?>, Writer, boolean) - 类 中的方法cn.aifei.enjoy.Template
渲染到 Writer 中去,autoCloseWriter 指定是否自动关闭 Writer
RenderDirective - cn.aifei.enjoy.ext.directive 中的类
#render 指令用于动态渲染子模板,作为 include 指令的补充
两种用法:
1:只传入一个参数,参数可以是 String 常量,也可以是任意表达式
#render("_hot.html")
#render(subFile)
2:传入任意多个参数,除第一个参数以外的所有参数必须是赋值表达式,用于实现参数传递功能
#render("_hot.html", title = "热门新闻", list = newsList)
上例中传递了 title、list 两个参数,可以代替父模板中的 #set 指令传参方式
并且此方式传入的参数只在子模板作用域有效,不会污染父模板作用域
这种传参方式有利于将子模板模块化,例如上例的调用改成如下的参数:
#render("_hot.html", title = "热门项目", list = projectList)
通过这种传参方式在子模板 _hot.html 之中,完全不需要修改对于 title 与 list
这两个变量的处理代码,就实现了对 “热门项目” 数据的渲染
RenderDirective() - 类 的构造器cn.aifei.enjoy.ext.directive.RenderDirective
RenderDirective.SubEnv - cn.aifei.enjoy.ext.directive 中的类
SubEnv 用于将子模板与父模板中的模板函数隔离开来,
否则在子模板被修改并被重新解析时会再次添加子模板中的
模板函数,从而抛出异常
SubEnv 也可以使子模板中定义的模板函数不与上层产生冲突,
有利于动态型模板渲染的模块化
注意: #render 子模板中定义的模板函数无法在父模板中调用
RenderDirective.SubStat - cn.aifei.enjoy.ext.directive 中的类
renderToString(Map<?, ?>) - 类 中的方法cn.aifei.enjoy.Template
渲染到 String 中去
renderToString() - 类 中的方法cn.aifei.enjoy.Template
支持无 data 参数,渲染到 String 中去
适用于数据在模板中通过表达式和语句直接计算得出等等应用场景
renderToString(Map<?, ?>, Template.Func<CharWriter>) - 类 中的方法cn.aifei.enjoy.Template
渲染到 String 中去
Func 接口用于接管内部的 Stat ast、Env env、Scope scope 变量,并且便于
向 Ctrl 传入 attachment 参数
例子:
Map data = new HashMap<>();
data.put("key", 123);
String ret = template.renderToString(data, (ast, env, scope, writer) -> {
// 可以传入任意类型的 attachment 参数,以下以 Kv 对象为例
// 该参数可以在指令中通过 scope.getCtrl().getAttachment() 获取
scope.getCtrl().setAttachment(Kv.of("key", 456));
// 接管内部的 ast、env、scope、writer,执行 ast.exec(...)
renderToStringBuilder(Map<?, ?>) - 类 中的方法cn.aifei.enjoy.Template
渲染到 StringBuilder 中去
replace(K, V, V) - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
replace(K, V) - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
replaceAll(BiFunction<? super K, ? super V, ? extends V>) - 类 中的方法cn.aifei.enjoy.util.SyncWriteMap
Return - cn.aifei.enjoy.stat.ast 中的类
Return
通常用于 #define 指令内部,不支持返回值
ReturnIf - cn.aifei.enjoy.stat.ast 中的类
#returnIf(expr) 指令,当 expr 为 true 时返回,等价于:
#if (expr)
#return
#end
ReturnIf(ExprList, Location) - 类 的构造器cn.aifei.enjoy.stat.ast.ReturnIf
Scope - cn.aifei.enjoy.stat 中的类
Scope
1:顶层 scope.parent 为 null
2:scope.set(...)
Scope(Map, Map<String, Object>) - 类 的构造器cn.aifei.enjoy.stat.Scope
构建顶层 Scope, parent 为 null 是顶层 Scope 的标志
Scope(Scope) - 类 的构造器cn.aifei.enjoy.stat.Scope
构建 AST 执行过程中作用域栈
separator - 类 中的变量cn.aifei.enjoy.stat.Compressor
Set - cn.aifei.enjoy.stat.ast 中的类
Set 赋值,从内向外作用域查找变量,找到则替换变量值,否则在顶层作用域赋值
用法:
1:#set(k = v)
2:#set(k1 = v1, k2 = v2, ..., kn = vn)
3:#set(x = 1+2)
4:#set(x = 1+2, y = 3>4, ..., z = c ?
Set(ExprList, Location) - 类 的构造器cn.aifei.enjoy.stat.ast.Set
set(Object, Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
设置变量
自内向外在作用域栈中查找变量,如果找到则改写变量值,否则将变量存放到顶层 Scope
setAttachment(Object) - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setBaseTemplatePath(String) - 类 中的方法cn.aifei.enjoy.Engine
setBaseTemplatePath(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
setBigDecimalDivideMinScale(int) - 类 中的静态方法cn.aifei.enjoy.expr.ast.Arith
设置 BigDecimal 除法使用的最小 scale 值,默认为 5
setBigDecimalDivideRoundingMode(RoundingMode) - 类 中的静态方法cn.aifei.enjoy.expr.ast.Arith
设置 BigDecimal 除法使用的舍入模式,默认为四舍五入
setBreak() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setBufferSize(int) - 类 中的方法cn.aifei.enjoy.Engine
setBufferSize(int) - 类 中的方法cn.aifei.enjoy.EngineConfig
setBufferSize(int) - 类 中的方法cn.aifei.enjoy.io.WriterBuffer
setByteCode(Map<String, byte[]>) - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
setCacheStringTemplate(boolean) - 类 中的方法cn.aifei.enjoy.Engine
配置是否缓存字符串模板,也即是否缓存通过 getTemplateByString(String content)
方法获取的模板,默认配置为 false
setChineseExpression(boolean) - 类 中的静态方法cn.aifei.enjoy.Engine
设置为 true 支持表达式、变量名、方法名、模板函数名使用中文
setChineseExpression(boolean) - 类 中的静态方法cn.aifei.enjoy.stat.CharTable
设置为 true 支持表达式、变量名、方法名、模板函数名使用中文
setClazz(Class<?>) - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
setCompileOptions(List<String>) - 类 中的方法cn.aifei.enjoy.proxy.ProxyCompiler
setCompressor(Compressor) - 类 中的方法cn.aifei.enjoy.Engine
配置 Compressor 可对模板中的静态内容进行压缩
可通过该方法配置自定义的 Compressor 来代替系统默认实现,例如:
engine.setCompressor(new MyCompressor());
setCompressor(Compressor) - 类 中的方法cn.aifei.enjoy.EngineConfig
setCompressorOn(char) - 类 中的方法cn.aifei.enjoy.Engine
设置开启压缩功能
setCompressorOn() - 类 中的方法cn.aifei.enjoy.Engine
设置开启压缩功能。
setContinue() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setData(Map) - 类 中的方法cn.aifei.enjoy.stat.Scope
设置/替换本层作用域 data,通常用于在扩展指令中使用现成可用的 Map 来存放数据,
从而避免 Scope 内部创建 data,节省时空
注意:本方法会替换掉已经存在的 data 对象
setDatePattern(String) - 类 中的方法cn.aifei.enjoy.Engine
setDatePattern(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
setDefault(Default, Location) - 类 中的方法cn.aifei.enjoy.stat.ast.Switch
setDevMode(boolean) - 类 中的方法cn.aifei.enjoy.Engine
设置 true 为开发模式,支持模板文件热加载
设置 false 为生产模式,不支持模板文件热加载,以达到更高的性能
setEncoderFactory(EncoderFactory) - 类 中的方法cn.aifei.enjoy.Engine
Enjoy 模板引擎对 UTF-8 的 encoding 做过性能优化,某些罕见字符
无法被编码,可以配置为 JdkEncoderFactory 解决问题:
engine.setEncoderFactory(new JdkEncoderFactory());
setEncoderFactory(EncoderFactory) - 类 中的方法cn.aifei.enjoy.EngineConfig
setEncoderFactory(EncoderFactory) - 类 中的方法cn.aifei.enjoy.io.WriterBuffer
setEncoding(String) - 类 中的方法cn.aifei.enjoy.Engine
setEncoding(String) - 类 中的方法cn.aifei.enjoy.EngineConfig
setEncoding(String) - 类 中的方法cn.aifei.enjoy.io.WriterBuffer
setEnvForDevMode(Env) - 类 中的方法cn.aifei.enjoy.stat.ast.Define
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.Directive
指令被解析时注入指令参数表达式列表,继承类可以通过覆盖此方法对参数长度和参数类型进行校验
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.ext.directive.CallDirective
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.ext.directive.DateDirective
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.ext.directive.NowDirective
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.ext.directive.NumberDirective
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.ext.directive.RenderDirective
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.ext.directive.StringDirective
setExprList(ExprList) - 类 中的方法cn.aifei.enjoy.stat.ast.Stat
setFastFieldKeyBuilder(boolean) - 类 中的静态方法cn.aifei.enjoy.Engine
setFastFieldKeyBuilder(boolean) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKeyBuilder
开启 FastFieldKeyBuilder,性能更高
setFastMode(boolean) - 类 中的静态方法cn.aifei.enjoy.Engine
设置极速模式
极速模式将生成代理对象来消除 java.lang.reflect.Method.invoke(...)
setFastMode(boolean) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKit
设置极速模式
极速模式将生成代理对象来消除 java.lang.reflect.Method.invoke(...)
setFieldKeyBuilder(FieldKeyBuilder) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FieldKeyBuilder
设置为自定义 FieldKeyBuilder
SetGlobal - cn.aifei.enjoy.stat.ast 中的类
SetGlobal 设置全局变量,全局作用域是指本次请求的整个 template
适用于极少数的在内层作用域中希望直接操作顶层作用域的场景
SetGlobal(ExprList, Location) - 类 的构造器cn.aifei.enjoy.stat.ast.SetGlobal
setGlobal(Object, Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
设置全局变量
全局作用域是指本次请求的整个 template
setGlobalAssignment() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setJumpNone() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setKeepLineBlank(String, boolean) - 类 中的方法cn.aifei.enjoy.EngineConfig
SetLocal - cn.aifei.enjoy.stat.ast 中的类
SetLocal 设置局部变量
通常用于 #define #include 指令内部需要与外层作用域区分,以便于定义重用型模块的场景
也常用于 #for 循环内部的临时变量
SetLocal(ExprList, Location) - 类 的构造器cn.aifei.enjoy.stat.ast.SetLocal
setLocal(Object, Object) - 类 中的方法cn.aifei.enjoy.stat.Scope
设置局部变量
setLocalAssignment() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setLocation(Location) - 类 中的方法cn.aifei.enjoy.stat.ast.Stat
setMainEngine(Engine) - 类 中的静态方法cn.aifei.enjoy.Engine
Set main engine
setMaxBufferSize(int) - 类 中的静态方法cn.aifei.enjoy.io.FastStringWriter
setMethodKeyBuilder(MethodKeyBuilder) - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKeyBuilder
切换到用户自定义 MethodKeyBuilder
setNextCase(Case) - 类 中的方法cn.aifei.enjoy.stat.ast.Case
setNextCase(Case) - 接口 中的方法cn.aifei.enjoy.stat.ast.CaseSetter
setNextCase(Case) - 类 中的方法cn.aifei.enjoy.stat.ast.Switch
setNullSafe(boolean) - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setOutputCompileError(boolean) - 类 中的静态方法cn.aifei.enjoy.expr.ast.FastFieldGetter
setOutputDirectiveFactory(OutputDirectiveFactory) - 类 中的方法cn.aifei.enjoy.Engine
Set output directive factory
setOutputDirectiveFactory(OutputDirectiveFactory) - 类 中的方法cn.aifei.enjoy.EngineConfig
Set output directive factory
setReentrantBufferSize(int) - 类 中的方法cn.aifei.enjoy.Engine
setReentrantBufferSize(int) - 类 中的方法cn.aifei.enjoy.EngineConfig
setReentrantBufferSize(int) - 类 中的方法cn.aifei.enjoy.io.WriterBuffer
setReloadModifiedSharedFunctionInDevMode(boolean) - 类 中的方法cn.aifei.enjoy.Engine
Engine 独立设置为 devMode 可以方便模板文件在修改后立即生效,
但如果在 devMode 之下并不希望对 addSharedFunction(...),
添加的模板进行是否被修改的检测可以通过此方法设置 false 参进去
注意:Engine 在生产环境下(devMode 为 false),该参数无效
setReloadModifiedSharedFunctionInDevMode(boolean) - 类 中的方法cn.aifei.enjoy.EngineConfig
setReturn() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setRootData(Map) - 类 中的方法cn.aifei.enjoy.stat.Scope
设置/替换顶层作用域 data,可以在扩展指令之中通过此方法切换掉顶层作用域
实现作用域完全隔离的功能
注意:本方法会替换掉顶层已经存在的 data 对象
setRoundingMode(RoundingMode) - 类 中的方法cn.aifei.enjoy.Engine
设置 #number 指令与 Arith 中浮点数的舍入规则,默认为 RoundingMode.HALF_UP "四舍五入"
setRoundingMode(RoundingMode) - 类 中的方法cn.aifei.enjoy.EngineConfig
设置 #number 指令与 Arith 中浮点数的舍入规则,默认为 RoundingMode.HALF_UP "四舍五入"
setSourceCode(String) - 类 中的方法cn.aifei.enjoy.proxy.ProxyClass
setSourceFactory(ISourceFactory) - 类 中的方法cn.aifei.enjoy.Engine
设置 ISourceFactory 用于为 engine 切换不同的 ISource 实现类
ISource 用于从不同的来源加载模板内容
setStat(Stat) - 类 中的方法cn.aifei.enjoy.Directive
指令被解析时注入指令 body 内容,仅对于具有 #end 结束符的指令有效
setStat(Stat) - 类 中的方法cn.aifei.enjoy.stat.ast.ElseIf
take over setStat(...) method of super class
setStat(Stat) - 类 中的方法cn.aifei.enjoy.stat.ast.If
take over setStat(...) method of super class
setStat(Stat) - 类 中的方法cn.aifei.enjoy.stat.ast.Stat
setStaticFieldExpression(boolean) - 类 中的方法cn.aifei.enjoy.Engine
设置为 true 支持静态属性访问表达式,默认值为 false
setStaticFieldExpression(boolean) - 类 中的方法cn.aifei.enjoy.EngineConfig
设置为 true 支持静态属性访问表达式,默认值为 false
setStaticMethodExpression(boolean) - 类 中的方法cn.aifei.enjoy.Engine
设置为 true 支持静态方法调用表达式,默认值为 false
setStaticMethodExpression(boolean) - 类 中的方法cn.aifei.enjoy.EngineConfig
设置为 true 支持静态方法调用表达式,默认值为 false
setToClassPathSourceFactory() - 类 中的方法cn.aifei.enjoy.Engine
设置为 ClassPathSourceFactory 的快捷方法
setToJdkEncoderFactory() - 类 中的方法cn.aifei.enjoy.Engine
配置为 JdkEncoderFactory,支持 utf8mb4,支持 emoji 表情字符,
支持各种罕见字符编码
setToStrictMethodKeyBuilder() - 类 中的静态方法cn.aifei.enjoy.expr.ast.MethodKeyBuilder
切换到 StrictMethodKeyBuilder
特别注意:
如果希望将 configEngine(Engine me) 中的 Engine 切换到 StrictMethodKeyBuilder,
需要在 YourJFinalConfig extends JFinalConfig 中利用如下代码块才能生效:
static {
MethodKeyBuilder.setToStrictMethodKeyBuilder();
}
原因是在 com.jfinal.core.Config 中 new Engine() 时 setToStrictMethodKeyBuilder()
方法并未生效,所以 extension method 生成 method key 时仍然使用的是 FastMethodKeyBuilder
以至于在运行时,使用 StrictMethodKeyBuilder 生成的 key 找不到 extension method
后续版本考虑在调用 setToStrictMethodKeyBuilder() 以后重新初始化一下 MethodKit 中的变量
原先的 static 初始化方式重构出 synchronized void init() 方法来方便调用
setValue(Object) - 类 中的方法cn.aifei.enjoy.stat.ast.ForEntry
setWisdomAssignment() - 类 中的方法cn.aifei.enjoy.stat.Ctrl
setWriterBuffer(WriterBuffer) - 类 中的方法cn.aifei.enjoy.EngineConfig
配置自己的 WriterBuffer 实现,配置方法:
engine.getEngineConfig().setWriterBuffer(
sha1(String) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
sha256(String) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
sha384(String) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
sha512(String) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
SharedMethod - cn.aifei.enjoy.expr.ast 中的类
SharedMethod
用法:
engine.addSharedMethod(new StrKit());
engine.addSharedStaticMethod(MyKit.class);
#if (notBlank(para))
....
SharedMethod(SharedMethodKit, String, ExprList, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.SharedMethod
SharedMethodKit - cn.aifei.enjoy.expr.ast 中的类
SharedMethodKit
SharedMethodKit() - 类 的构造器cn.aifei.enjoy.expr.ast.SharedMethodKit
SharedMethodLib - cn.aifei.enjoy.ext.sharedmethod 中的类
SharedMethodLib 共享方法库,逐步添加一些最常用的共享方法
3.3 版本之前的 Logic.isTrue(Object) 方法不再对 Collection、
Map、数组、Iterator、Iterable 进行为空的判断,这部分逻辑已转移至
SharedMethodLib.isEmpty(Object)
SharedMethodLib() - 类 的构造器cn.aifei.enjoy.ext.sharedmethod.SharedMethodLib
ShortExt - cn.aifei.enjoy.ext.extensionmethod 中的类
针对 java.lang.Short 的扩展方法
用法:
#if(value.toInt() == 123)
ShortExt() - 类 的构造器cn.aifei.enjoy.ext.extensionmethod.ShortExt
size() - 类 中的方法cn.aifei.enjoy.expr.ast.RangeArray.RangeList
slowEquals(byte[], byte[]) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
slowEquals(String, String) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
source - 类 中的变量cn.aifei.enjoy.ext.directive.RenderDirective.SubStat
sourceList - 类 中的变量cn.aifei.enjoy.Env
stat - 类 中的变量cn.aifei.enjoy.Directive
具有 #end 结束符的指令内部嵌套的所有内容,调用 stat.exec(env, scope, writer)
即可执行指令内部嵌入所有指令与表达式,如果指令没有 #end 结束符,该属性无效
stat - 类 中的变量cn.aifei.enjoy.ext.directive.RenderDirective.SubStat
Stat - cn.aifei.enjoy.stat.ast 中的类
Stat
Stat() - 类 的构造器cn.aifei.enjoy.stat.ast.Stat
StaticField - cn.aifei.enjoy.expr.ast 中的类
StaticField : ID_list '::' ID
动态获取静态变量值,变量值改变时仍可正确获取
用法:com.jfinal.core.Const::JFINAL_VERSION
StaticField(String, String, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.StaticField
StaticMethod - cn.aifei.enjoy.expr.ast 中的类
StaticMethod : ID_list : '::' ID '(' exprList?
StaticMethod(String, String, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.StaticMethod
StaticMethod(String, String, ExprList, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.StaticMethod
StatList - cn.aifei.enjoy.stat.ast 中的类
StatList
StatList(List<Stat>) - 类 的构造器cn.aifei.enjoy.stat.ast.StatList
StrictFieldKeyBuilder() - 类 的构造器cn.aifei.enjoy.expr.ast.FieldKeyBuilder.StrictFieldKeyBuilder
StrictMethodKeyBuilder() - 类 的构造器cn.aifei.enjoy.expr.ast.MethodKeyBuilder.StrictMethodKeyBuilder
StringDirective - cn.aifei.enjoy.ext.directive 中的类
#string 指令方便定义大量的多行文本变量,这个是 java 语言中极为需要的功能
定义:
#string(name)
在此是大量的字符串
#end
使用:
#(name)
StringDirective() - 类 的构造器cn.aifei.enjoy.ext.directive.StringDirective
StringExt - cn.aifei.enjoy.ext.extensionmethod 中的类
针对 java.lang.String 的扩展方法
重要用途:
Controller.keepPara() 方法会将所有类型的数据当成 String 并传回到
到模板中,所以模板中的如下代码将无法工作:
#if(age > 18)
....
StringExt() - 类 的构造器cn.aifei.enjoy.ext.extensionmethod.StringExt
StringSource - cn.aifei.enjoy.source 中的类
StringSource 用于从 String 变量中加载模板内容
StringSource(String, boolean) - 类 的构造器cn.aifei.enjoy.source.StringSource
构造 StringSource
StringSource(String, String) - 类 的构造器cn.aifei.enjoy.source.StringSource
构造 StringSource
StringSource(StringBuilder, boolean) - 类 的构造器cn.aifei.enjoy.source.StringSource
StringSource(StringBuilder, String) - 类 的构造器cn.aifei.enjoy.source.StringSource
StrKit - cn.aifei.enjoy.util 中的类
StrKit.
StrKit() - 类 的构造器cn.aifei.enjoy.util.StrKit
SubEnv(Env) - 类 的构造器cn.aifei.enjoy.ext.directive.RenderDirective.SubEnv
SubStat(RenderDirective.SubEnv, Stat, ISource) - 类 的构造器cn.aifei.enjoy.ext.directive.RenderDirective.SubStat
Switch - cn.aifei.enjoy.stat.ast 中的类
Switch
#switch 指令与 Java 12 switch 新特性的设计相似: http://openjdk.java.net/jeps/325
在与 java 老版本指令基本用法相同的基础上,主要变化与特性有:
1: 移除 java 语法中的 fall-through semantics,即不需要 break 关键字进行断开
2: 不引入 #break 指令,代码更少、更优雅
3: #case 参数可使用多个用逗号分隔的表达式,每个表达式求值后与 #switch 参数求值后比较,
从根本上消除了 #break 指令的必要性
4: #case 支持任意类型数据与表达式(java 语言只支持少数常量类型)
示例:
#switch (month)
#case (1, 3, 5, 7, 8, 10, 12)
#(month) 月有 31 天
#case (2)
#(month) 月平年有28天,闰年有29天
#default
月份错误: #(month ??
Switch(ExprList, Location) - 类 的构造器cn.aifei.enjoy.stat.ast.Switch
Sym - cn.aifei.enjoy.expr 中的枚举
Sym
SyncWriteMap <K ,V > - cn.aifei.enjoy.util 中的类
SyncWriteMap 同步写 HashMap
创建原因是 HashMap扩容时,遇到并发修改可能造成 100% CPU 占用
SyncWriteMap 拥有 HashMap 的性能,但不保障并发访问的线程安全
只用于读多写少且不用保障线程安全的场景
例如 MethodKit 中用于缓存 MethodInfo 的 cache,被写入的数据
不用保障是单例,读取之后会做 null 值判断
ActionMapping 中的 HashMap 是系统启动时在独立线程内初始化的,
不存在并发写,只存在并发读的情况,所以仍然可以使用 HashMap
SyncWriteMap() - 类 的构造器cn.aifei.enjoy.util.SyncWriteMap
SyncWriteMap(int) - 类 的构造器cn.aifei.enjoy.util.SyncWriteMap
SyncWriteMap(int, float) - 类 的构造器cn.aifei.enjoy.util.SyncWriteMap
SyncWriteMap(Map<? extends K, ? extends V>) - 类 的构造器cn.aifei.enjoy.util.SyncWriteMap
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FastFieldGetter
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetter
接管 target.fieldName 表达式,如果可以接管则返回接管对象,否则返回 null
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.ArrayLengthGetter
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.GetterMethodFieldGetter
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.IsMethodFieldGetter
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.MapFieldGetter
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.NullFieldGetter
takeOver(Class<?>, String) - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.RealFieldGetter
Template - cn.aifei.enjoy 中的类
Template
用法:
Template template = Engine.use().getTemplate(...);
template.render(data, writer);
template.renderToString(data);
Template(Env, Stat) - 类 的构造器cn.aifei.enjoy.Template
Template.Func <T > - cn.aifei.enjoy 中的接口
Func 接口用于接管内部的 Stat ast、Env env、Scope scope 变量
实现更加灵活、强大的功能
TemplateException - cn.aifei.enjoy 中的异常错误
Template runtime exception
TemplateException(String, Location) - 异常错误 的构造器cn.aifei.enjoy.TemplateException
TemplateException(String, Location, Throwable) - 异常错误 的构造器cn.aifei.enjoy.TemplateException
Ternary - cn.aifei.enjoy.expr.ast 中的类
Ternary
Ternary(Expr, Expr, Expr, Location) - 类 的构造器cn.aifei.enjoy.expr.ast.Ternary
cond ?
Text - cn.aifei.enjoy.stat.ast 中的类
Text 输出纯文本块以及使用 "#[[" 与 "]]#" 定义的原样输出块
Text(StringBuilder, EngineConfig) - 类 的构造器cn.aifei.enjoy.stat.ast.Text
TimeKit - cn.aifei.enjoy.util 中的类
TimeKit 用于简化 JDK 8 新增的时间 API
新旧日期转换通过桥梁 Instant 进行,转成 LocalDate、LocalTime 需要先转成 LocalDateTime:
新转旧:LocalDateTime.atZone(ZoneId).toInstant() -> Instant -> Date.from(Instant)
旧转新:Date.toInstant() -> Instant -> LocalDateTime.ofInstant(Instant, ZoneId)
经测试,SimpleDateFormat 比 DateTimeFormatter 对 pattern 的支持更好
对于同样的 pattern 值 "yyyy-MM-dd HH:mm:ss",前者可以转换 "2020-06-9 12:13:19"
后者却不支持,原因是 pattern 的 dd 位置只有数字 9,必须要是两位数字才能支持
所以:建议优先使用转换结果为 Date 的 parse 方法,使用 SimpleDateFormat 来转换
TimeKit() - 类 的构造器cn.aifei.enjoy.util.TimeKit
toBigDecimal(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toBigDecimal(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toBigDecimal(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toBigDecimal(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toBigDecimal(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toBigDecimal(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toBigDecimal(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toBigDecimal(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toBigDecimal(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toBigInteger(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toBigInteger(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toBigInteger(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toBigInteger(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toBigInteger(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toBigInteger(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toBigInteger(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toBigInteger(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toBoolean(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toBoolean(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toBoolean(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toBoolean(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toBoolean(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toBoolean(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toBoolean(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toBoolean(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toBoolean(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
StringExt.toBoolean() 是数据类型转换,所以与 Logic.isTrue(String)
中的逻辑不同,后者只要 String 值非 null 并且 length() > 0 即返回 true
toByte(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toByte(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toByte(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toByte(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toByte(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toByte(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toByte(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toByte(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toByte(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toCamelCase(String) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
将包含下划线字符 '_' 的字符串转换成驼峰格式,不包含下划线则原样返回
toCamelCase(String, boolean) - 类 中的静态方法cn.aifei.enjoy.util.StrKit
字符串转换成驼峰格式
toLowerCaseAnyway 参数的作用如下:
1:当待转换字符串中包含下划线字符 '_' 时,无需关心 toLowerCaseAnyway 参数的值,转换结果始终一样
2:当待转换字符串中不包含下划线字符 '_' 时,toLowerCaseAnyway 参数规则如下:
true 值: 将待转换字符串全部转换成小与字母,适用于 oralce 数据库字段转换的场景
因为 oracle 字段全是大写字母
false 值: 则原样返回待转换字符串,适用于待转换字符串可能原本就是驼峰格式的场景
如果原本就是驼峰,全部转成小写字母显然不合理
toConstIfPossible() - 类 中的方法cn.aifei.enjoy.expr.ast.Unary
如果可能的话,将 Unary 表达式转化成 Const 表达式,类似于 ExprParser.buildMapEntry() 需要这种转化来简化实现
除了可简化程序外,还起到一定的性能优化作用
Number : +123 -456 +3.14 -0.12
Boolean : !
toDate(LocalDateTime) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
java.time.LocalDateTime --> java.util.Date
toDate(LocalDate) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
java.time.LocalDate --> java.util.Date
toDate(LocalTime) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
java.time.LocalTime --> java.util.Date
toDate(LocalDate, LocalTime) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
java.time.LocalTime --> java.util.Date
toDouble(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toDouble(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toDouble(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toDouble(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toDouble(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toDouble(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toDouble(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toDouble(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toDouble(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toFloat(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toFloat(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toFloat(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toFloat(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toFloat(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toFloat(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toFloat(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toFloat(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toFloat(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toHex(byte[]) - 类 中的静态方法cn.aifei.enjoy.util.HashKit
toInt(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toInt(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toInt(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toInt(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toInt(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toInt(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toInt(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toInt(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toInt(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toJavaFormatString() - 类 中的方法cn.aifei.enjoy.io.FloatingDecimal
toLocalDate(Date) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
java.util.Date --> java.time.LocalDate
toLocalDateTime(Date) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
java.util.Date --> java.time.LocalDateTime
toLocalTime(Date) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
java.util.Date --> java.time.LocalTime
toLong(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toLong(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toLong(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toLong(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toLong(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toLong(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toLong(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toLong(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toLong(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toLong(LocalDateTime, int) - 类 中的静态方法cn.aifei.enjoy.util.TimeKit
将 LocalDateTime 转为 long 类型
例子:
toLong(LocalDateTime.now(), 3);
toShort(BigDecimal) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigDecimalExt
toShort(BigInteger) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.BigIntegerExt
toShort(Byte) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ByteExt
toShort(Double) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.DoubleExt
toShort(Float) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.FloatExt
toShort(Integer) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.IntegerExt
toShort(Long) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.LongExt
toShort(Short) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.ShortExt
toShort(String) - 类 中的方法cn.aifei.enjoy.ext.extensionmethod.StringExt
toString() - 类 中的方法cn.aifei.enjoy.Engine
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.Const
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.FastFieldGetter
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.GetterMethodFieldGetter
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.IsMethodFieldGetter
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.FieldGetters.RealFieldGetter
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.FieldKeyBuilder.FieldKey
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.Id
Id.toString() 后续版本不能变动,已有部分第三方依赖此方法
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.MethodInfo
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.StaticField
toString() - 类 中的方法cn.aifei.enjoy.expr.ast.Unary
toString() - 类 中的方法cn.aifei.enjoy.expr.NumTok
toString() - 枚举 中的方法cn.aifei.enjoy.expr.Sym
toString() - 类 中的方法cn.aifei.enjoy.io.FastStringWriter
toString() - 类 中的方法cn.aifei.enjoy.io.FloatingDecimal
toString() - 类 中的方法cn.aifei.enjoy.source.ClassPathSource
toString() - 类 中的方法cn.aifei.enjoy.source.FileSource
toString() - 类 中的方法cn.aifei.enjoy.source.StringSource
toString() - 类 中的方法cn.aifei.enjoy.stat.ast.Define
toString() - 类 中的方法cn.aifei.enjoy.stat.ast.Text
toString() - 类 中的方法cn.aifei.enjoy.stat.Location
toString() - 类 中的方法cn.aifei.enjoy.stat.ParaToken
toStringBuilder() - 类 中的方法cn.aifei.enjoy.io.FastStringWriter
TRUE - 类 中的静态变量cn.aifei.enjoy.expr.ast.Const