Browse Source

添加 BigDecimalExt 扩展 BigDecimal

James 2 years ago
parent
commit
01fc3cfa38

+ 2 - 0
src/main/java/com/jfinal/template/expr/ast/MethodKit.java

@@ -18,6 +18,7 @@ package com.jfinal.template.expr.ast;
 
 import java.io.File;
 import java.lang.reflect.Method;
+import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -249,6 +250,7 @@ public class MethodKit {
 		addExtensionMethod(Byte.class, new ByteExt());
 
 		addExtensionMethod(BigInteger.class, new BigIntegerExt());
+		addExtensionMethod(BigDecimal.class, new BigDecimalExt());
 	}
 
 	public synchronized static void addExtensionMethod(Class<?> targetClass, Object objectOfExtensionClass) {

+ 64 - 0
src/main/java/com/jfinal/template/ext/extensionmethod/BigDecimalExt.java

@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011-2023, James Zhan 詹波 (jfinal@126.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.jfinal.template.ext.extensionmethod;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+/**
+ * 针对 java.math.BigDecimal 的扩展方法
+ *
+ * 用法:
+ * #if(value.toInt() == 123)
+ */
+public class BigDecimalExt {
+    public Boolean toBoolean(BigDecimal self) {
+        return !self.equals(BigDecimal.ZERO);
+    }
+
+    public Integer toInt(BigDecimal self) {
+        return self.intValueExact();
+    }
+
+    public Long toLong(BigDecimal self) {
+        return self.longValueExact();
+    }
+
+    public Float toFloat(BigDecimal self) {
+        return self.floatValue();
+    }
+
+    public Double toDouble(BigDecimal self) {
+        return self.doubleValue();
+    }
+
+    public Short toShort(BigDecimal self) {
+        return self.shortValueExact();
+    }
+
+    public Byte toByte(BigDecimal self) {
+        return self.byteValueExact();
+    }
+
+    public BigInteger toBigInteger(BigDecimal self) {
+        return self.toBigInteger();
+    }
+
+    public BigDecimal toBigDecimal(BigDecimal self) {
+        return self;
+    }
+}