为各人先容一个险些全能的Java类库——Jodd【文章示例利用3.7.1版本的jodd】
Jodd公用东西
BeanUtil 最快的bean处理惩罚库。
一个简朴的JavaBean:
/** * 拿客 * 网站:www.coderknock.com * QQ群:213732117 * 三产 建设于 2016年07月02日 22:51:34。 */ public class Foo { private String readwrite; // 提供 getter 和 setter private String readonly; // 只提供getter ... //省略掉个getter和setter }
利用BeanUtil举办操纵:
import jodd.bean.BeanUtil; /** * 拿客 * 网站:www.coderknock.com * QQ群:213732117 * 三产 建设于 2016年07月02日 22:56:47。 */ public class TestFoo { public static void main(String[] args) { Foo foo = new Foo(); BeanUtil.pojo.setProperty(foo, "readwrite", "readwritedata"); System.out.println(BeanUtil.pojo.getProperty(foo, "readwrite").toString()); BeanUtil.declared.setProperty(foo, "readonly", "readonlydata"); System.out.println(foo.getReadonly()); } }
输出功效:
readwritedata readonlydata
留意:假如直接对没有setter的readonly属性利用BeanUtil.pojo.setProperty(foo, “readonly”, “readonlydata”);则会报错:
Exception in thread "main" jodd.bean.BeanException: Simple property not found: readonly. Invalid property: Foo#readonly (Foo#readonly) at jodd.bean.BeanUtilBean.setSimpleProperty(BeanUtilBean.java:222) at jodd.bean.BeanUtilBean._setIndexProperty(BeanUtilBean.java:408) at jodd.bean.BeanUtilBean.setIndexProperty(BeanUtilBean.java:400) at jodd.bean.BeanUtilBean.setProperty(BeanUtilBean.java:475) at bean.TestFoo.main(TestFoo.java:14) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Cache【今朝好像还没有完全开拓完成】 组通用缓存实现。
Printf 为Java提供像C一样名目化值打印。
Printf.str("%+i", 173); // +173 Printf.str("%04d", 1); // 0001 Printf.str("%f", 1.7); // 1.700000 Printf.str("%1.1f", 1.7); // 1.7 Printf.str("%.4e", 100.1e10); // 1.0010e+012 Printf.str("%G", 1.1e13); // 1.1E+013 Printf.str("%l", true); // true Printf.str("%L", 123); // TRUE Printf.str("%b", 13); // 1101 Printf.str("%,b", -13); // 11111111 11111111 11111111 11110011 Printf.str("%#X", 173); // 0XAD Printf.str("%,x", -1); // ffff ffff Printf.str("%s %s", new String[]{"one", "two"}); // one two
JDateTime 集优雅与最大限度的准确为一体的时间处理惩罚库 【利用教程】
Type Converter 利便高效的范例转换器。
StringUtil 高出100个特别字符串东西要领。
StringTemplateParser 简朴的字符串模板理会器。
import jodd.util.StringTemplateParser; import java.util.HashMap; import java.util.Map; /** * 拿客 * www.coderknock.com * QQ群:213732117 * 建设时间:2016年07月14日 * 描写:StringTemplateParser */ public class JoddStringTemplateParser { public static void main(String[] args) { // prepare template String template = "Hello ${foo}. Today is ${dayName}."; // prepare data Map<String, String> map = new HashMap<String, String>(); map.put("foo", "Jodd"); map.put("dayName", "Sunday"); // parse StringTemplateParser stp = new StringTemplateParser(); String result = stp.parse(template, new StringTemplateParser.MacroResolver() { public String resolve(String macroName) { return map.get(macroName); } }); // result == "Hello Jodd. Today is Sunday." } }
搜索、扫描、遍历文件的一些简朴的要领。
Class finder 在classpath中快速找到对应的类。
Wildcard 在Java中便捷的利用通配符。
Wildcard.match("CfgOptions.class", "*C*g*cl*"); // true Wildcard.match("CfgOptions.class", "*g*c**s"); // true Wildcard.match("CfgOptions.class", "??gOpti*c?ass"); // true Wildcard.match("CfgOpti*class", "*gOpti\\*class"); // true Wildcard.match("CfgOptions.class", "C*ti*c?a?*"); // true Wildcard.matchPath("/foo/soo/doo/boo", "/**/bo*"); // true Wildcard.matchPath("/foo/one/two/three/boo", "**/t?o/**"); // true
Servlets 各类与Servlet相关的东西集。
Jodd tag library 为JSP提供许多高效实用的标签。
Form tag 利用一个简朴的标签为页面提供自动填充表单的成果。
Class loading in Jodd 为加载类提供一个更好的要领。