`
wendal
  • 浏览: 21352 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Nutz寻宝: 咖啡糖-Nutz.Lang

    博客分类:
  • Nutz
阅读更多
想了解更多,猛击http://nutzhome.appspot.com/

原创者: zozoh http://zozoh.iteye.com/

Java 的语法比 C/C++ 友好很多, 因为它设计之初,就是为了考虑到程序员的使用是否舒适。
当然很多事情愿望是美好的,现实是残酷的。Java 语言本身的语法仍然不可避免的带有着 10年前那种
的僵硬和严谨。这里是一些小小的尝试,你会发现,大多数情况,通过一些静态函数,一行代码完全
可以做很多事情, 而且比“甜甜”的 Ruby 也差不了太多。


异常
创建异常
* 根据格式化字符串,生成运行时异常
				throw Lang.makeThrow("Error for %d [%s]", obj.getId(), obj.getName());
				

* 根据格式化字符串,生成一个指定的异常。
				throw Lang.makeThrow(SQLException.class, "Error for %d [%s]", obj.getId(), obj.getName());
				

* 未实现的运行时异常
				throw Lang.noImplement();
				


包裹异常
* 用运行时异常包裹抛出对象,如果抛出对象本身就是运行时异常,则直接返回。
				throw Lang.wrapThrow(e);
				

* 用一个指定可抛出类型来包裹一个抛出对象。这个指定的可抛出类型需要有一个构造函数 接受 Throwable 类型的对象
				throw Lang.wrapThrow(e, SQLException.class);
				

* 将一个或者多个异常组合抛出
				throw Lang.comboThrow(e1,e2,e3);
				

* 将抛出对象包裹成运行时异常,并增加自己的描述
				throw Lang.wrapThrow(e, "Error for %d [%s]", obj.getId(), obj.getName());
				


对象
* 比较对象: 支持数组,集合,和容器
			return Lang.equals(map1, map2);
			

* 显示对象
			return Dumps.obj(pojo);
			

* 是否包括
			return Lang.contains(myArray, ele);
			

* 遍历
			Lang.each(obj, new Each<Object>(){
				public void invoke(int i, T ele, int length){
					obj 可以是集合,数组,Map,普通对象.
					普通对象的话,则会传给本匿名类的 ele
				}
			});
			


容器转换
* 数组 to Map
			Pet[] pets = new Pet[3];
			... // 为数组赋值
			
			// 将把 Pet 对象的 name 字段的值作为 Key, 创建一个 Map
			Map<String,Pet> petMap = Lang.array2map(HashMap.class, pets, "name");
			

* 数组 to 数组
			Pet[] pets = new Pet[3];
			
			String[] ss = Lang.array2array(pets, String.class);
			

* 集合 to 数组
			List<Pet> pets = new ArrayList<Pet>();
			... // 为列表赋值
			
			Pet[] petArray = Lang.collection2array(pets);
			

* 集合 to 列表
			Queue<Pet> pets = new ArrayDeque<Pet>();
			... // 为队列赋值
			
			List<Pet> list = Lang.collection2list(pets);
			

* 集合 to Map
			Queue<Pet> pets = new ArrayDeque<Pet>();
			... // 为队列赋值
			
			// 将把 Pet 对象的 name 字段的值作为 Key, 创建一个 Map
			Map<String,Pet> petMap = Lang.collection2map(HashMap.class, pets, "name");
			

* Map to 对象
			return Lang.map2Object(map,Pet.class);
			


对象模拟
* 生成数组
			String[] ss = Lang.array("A","B","C");
			

* 从字符串生成 Reader
			Reader reader = Lang.inr("ABCDEF");
			

* 从字符串生成 InputStream
			InputStream ins = Lang.ins("ABCDEF");
			

* 从字符串生成 Map
			Map<String,Object> map = Lang.map("{a:10, b:'ABC', c:true}");
			


* 从字符串生成 List
			List<Object> list =  Lang.list("[true, 23, 'ABC']");
			

XML
* 创建 DocumentBuilder
			return Lang.xmls();
			

其他
* 打印 java.util.regex.Matcher 的详细信息
			return Dumps.matcher(matcher);
			

* 解析 Boolean
			assertTrue(Lang.parseBoolean("on"));
			assertTrue(Lang.parseBoolean("1"));
			assertTrue(Lang.parseBoolean("yes"));
			

-----------------------------------------------------------------------------------------
字符串操作
判断
* 是否为空串
			assertTrue(Strings.isEmpty(""));
			

* 是否为空白
			assertTrue(Strings.isEmpty("\t \r\n"));
			

* 是否被特定字符包裹
			assertTrue(Strings.isQuoteBy("[ABC]", '[', ']'));
			
			// 忽略空白
			assertTrue(Strings.isQuoteByIgnoreBlank("  \t [ABC]\r\n  ", '[', ']'));
			

* 集合中的最长串
			assertEquals(3, Strings.maxLength((String[]){"A","ABC","BC"}));
			
			// 集合
			assertEquals(3, Strings.maxLength(Lang.list("['A','ABC','BC']")));
			

修改
* 首字母大写
			assertEquals("Abc", Strings.capitalize("abc"));
			

* 切除首位空白
			assertEquals("ABC", Strings.trim("\t   ABC \r\n   ");
			

* 左填充 (居右)
			assertEquals("00FE", Strings.alignRight("FE", 4, '0');
			

* 右填充 (居左)
			assertEquals("FE00", Strings.alignLeft("FE", 4, '0');
			

转换
* 二进制形式字符串
			assertEquals("0110", Strings.fillBinary(6, 4);
			

* 十六进制形式字符串
			assertEquals("00FF", Strings.fillHex(255, 4);
			

* 拆分数组 (忽略空白元素)
			assertEquals(3, Strings.splitIgnoreBlank("A,B,C");
			assertEquals(3, Strings.splitIgnoreBlank(",A,B,,C,");
			


创建重复
		// 重复字符
		assertEquals("---", Strings.dup('-', 3));
		
		// 重复字串
		assertEquals("ABCABCABC", Strings.dup("ABC", 3));
		

-----------------------------------------------------------------------------------------
文件操作
查找
* 从 CLASSPATH 下寻找一个文件
			return Files.findFile("org/nutz/lang/Lang.class");
			

* 根据正则式,从压缩文件中获取文件
			return Files.findEntryInZip(new ZipFile("D:/nutz.jar"), "org/nutz/lang/Lang.class");
			

* 搜索一个类同一包下面的所有类
			return Resources.scanClass(Lang.class);
			


创建-删除-拷贝
* 创建新文件,如果父目录不存在,也一并创建
			Files.createNewFile(new File("D:/demo/abc.txt"));
			

* 创建新目录,如果父目录不存在
			Files.makeDir(new File("D:/demo/abc"));
			

* 强行删除一个目录,包括这个目录下所有的子目录和文件
			Files.deleteDir(new File("D:/demo/abc"));
			

* 清除一个目录里所有的内容
			Files.clearDir(new File("D:/demo/abc"));
			

* 将一个目录下的特殊名称的目录彻底删除,比如 '.svn' 或者 '.cvs'
			Files.cleanAllFolderInSubFolderes(new File("D:/demo"), ".svn");
			

读取-写入
* 读取文件全部内容 - UTF-8
			String txt = Files.read("D:/abc.txt");
			或者
			String txt = Lang.readAll(Streams.fileInr("D:/abc.txt"));
			

* 重写文件全部内容 - UTF-8
			// 如果 D:/abc.txt 不存在,则创建它
			String txt = Files.write("D:/abc.txt", "some text");
			或者
			// 如果 D:/abc.txt 不存在,则什么都不做
			String txt = Lang.writeAll(Streams.fileOutw("D:/abc.txt"), content.toString());
			

* 获取 Reader - UTF-8
			Reander reader =  Streams.fileInr("D:/abc.txt");
			或者
			Reander reader =  Streams.fileInr(new File("D:/abc.txt"));
			

* 获取 Writer - UTF-8
			Writer writer = Streams.fileOutw("D:/abc.txt");
			或者
			Writer writer = Streams.fileOutw(new File("D:/abc.txt"));
			

* 获取 InputStream
			InputStream ins =  Streams.fileIn("D:/abc.txt");
			或者
			InputStream ins =  Streams.fileIn(new File("D:/abc.txt"));
			

* 获取 OutputStream
			OutputStream ops =  Streams.fileOut("D:/abc.txt");
			或者
			OutputStream ops =  Streams.fileOut(new File("D:/abc.txt"));
			

直接在磁盘修改文件属性
* 将文件移动到新的位置
			Files.move(new File("D:/demo/abc.txt"), new File("D:/demo/def.txt"));
			

* 将文件改名
			Files.rename(new File("D:/demo/abc.txt"), "def.txt");
			

创建文件对象
* 将文件后缀改名,从而生成一个新的文件对象。但是并不在磁盘上创建它
			return Files.renameSuffix(new File("D:/demo/abc.txt"), ".java");
			

* 获取文件主名
			assertEquals("abc", Files.getMajorName(new File("D:/demo/abc.txt")));
			

* 获取文件后缀名
			assertEquals("txt", Files.getSuffixName(new File("D:/demo/abc.txt")));
			


-----------------------------------------------------------------------------------------
秒表
	Stopwatch sw = Stopwatch.begin();
	...
	这里是你的运行代码
	...
	sw.stop();
	System.out.println(sw.getDuration());
	

-----------------------------------------------------------------------------------------
随机数据
* 随机字符串
		// 生成 100 个长度不超过20的字符串
		StringGenerator sg = new StringGenerator(20);
		for(int i=0;i<100;i++)
			System.out.println(sg.next());
		

* 闭区间随机数
		return  GM.random(3,5)
		

* 随机枚举值
		return (new EnumRandom<MyEnums>(){}).next();
		

* 数组不重复随机对象
		Random<String> r = new ArrayRandom<String>(Lang.array("A", "B", "C"));
		int i = 0;
		while (null != r.next()) {
			i++;
		}
		assertEquals(3, i);
		

* 数组无穷随机对象
		Random<String> r = new RecurArrayRandom<String>(Lang.array("A", "B", "C"));
		for(int i=0; i<100; i++)
			System.out.println(r.next());
		

分享到:
评论

相关推荐

    nutz-1.r.60.jar

    nutz-1.r.60.jar

    nutz-1.b.43-jdk5.jar

    nutz-1.b.43-jdk5.jar 资源包

    nutz-1.b.43-jdk6.jar

    nutz-1.b.43-jdk5.jar 资源包

    nutz-1.r.62.jar

    nutz-1.r.62.jar 的jar包 可以解决中文乱码,设置字符编码等等

    nutz-1.r.62.zip

    Nutz-1.r.62是该框架的一个版本,它包含了一系列优化和改进,使得开发者在构建应用程序时能更加得心应手。 在Nutz-1.r.62.zip压缩包中,主要有以下几个文件: 1. `nutz-1.r.62.jar`:这是Nutz框架的核心库文件,...

    nutz-1.r.61.r2.jar包

    标题中的"nutz-1.r.61.r2.jar"是一个特定版本的Nutz框架的Java库文件。Nutz是一个开源的Java框架,它旨在简化Web开发,提供一系列实用工具和强大的支持,使得开发者能够更高效地进行业务逻辑处理。这个版本号"1.r.61...

    nutz-1.b.49-manual.pdf

    标题:"nutz-1.b.49-manual.pdf" 指出了文档是关于Nutz框架的官方手册,版本为1.b.49。手册这一名称通常意味着该文档是为用户提供详细的指导,帮助用户理解和使用该框架。 描述:"nutz 框架nutz-1.b.49-manual.pdf...

    nutz-1.b.48-manual.pdf 文档

    Nutz的设计目的之一是解决Java在Web开发领域相对于脚本语言而言显得开发效率较低的问题,通过提供一整套简洁、高效的组件和工具,如Dao、Ioc、Mvc、Json、Castors、Lang、Aop、Plugin和Resource,它们独立使用且功能...

    nutz-1.r.58

    "nutz-1.r.58"是一个特定版本的Nutz框架发布包,包含了该框架的各种组件和文档,便于开发者在项目中使用和学习。 在提供的文件列表中,我们有以下内容: 1. `nutz-1.r.58-javadoc.jar`:这是Nutz框架的API文档,...

    nutz-1.b.52.zip

    Nutz, 它是一组轻便小型的框架的集合。...如果你觉得 Java 语法不如 Ruby 便捷, Nutz.Castor 以及 Nutz.Lang 专为你设计 如果你以前根本没接触过 SSH ,只使用 JDBC 编程, 整个 Nutz 专门为你设计

    nutz-1.r.61-发布包

    "nutz-1.r.61-发布包"是Nutz框架的一个版本更新,具体为1.r.61版本。这个发布包包含了该版本的文档、源代码、编译后的类库以及相关的辅助文件,便于开发者下载、学习和使用。 1. **Nutz框架概述** Nutz 是一个轻量...

    nutz需要的jar包

    `nutz-mvc`包括了`nutz-web`和`nutz-wk`,前者处理Web相关的功能,后者是Nutz的Web容器,提供了Servlet的替代方案,使得开发者可以脱离传统的Servlet容器运行Nutz应用。 在进行Web开发时,我们还需要`nutz-plugin-...

    nutz-1.r.57的JDK1.5编译

    在本案例中,我们关注的是"Nutz-1.r.57的JDK1.5编译",这表明我们需要了解如何在较低的JDK版本环境下,编译和使用Nutz框架。 首先,我们要知道Nutz官方推荐使用JDK1.6进行编译,这是因为JDK1.6引入了许多对开发者...

    高效,小巧的开源JAVA WEB 开发框架-Nutz (源码,开发文档)

    更多的简化Java语法的函数和类 -- Nutz.Lang 以及 Nutz.Castors 不依赖任何第三方 Jar 包,从而便于程序员建立开发环境,部署,甚至重新编译 Nutz 的源代码。 不幸的是在第一版,我还是依赖了 Javassist 可以很好的...

    nutz-wechat-app-master.zip

    我们的小程序源码功能多样,涵盖社交、电商等领域。高度定制化,轻松打造专属风格。用户体验佳,界面美观操作便捷。安全可靠,保障数据与运行稳定。适合创业者、企业和开发者。提供技术支持与文档说明。...

    nutz-1.b.49.r2.zip

    Nutz是对于Java程序员来说,除SSH之外的另一个选择。当然,它是开源的,并且是完全免费的。同时也是商业友好的(Licensed under the Apache License, Version 2.0)。

    nutz-1.r.65.zip

    nutzboot1.65版jar包...............................................................................................希望对你有用

    Nutz-1.b.38

    Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等整 -- 它所有功能均不依赖第三方 jar 文件。这就意味着:如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了当然你要使用其它...

    nutuz-1.b.52.r3.zip

    5. `nutz-1.b.52-manual.pdf` 和 `nutz-1.b.52-manual.rtf`:这两个文件都是 Nutz 框架的手册,分别提供了 PDF 和 RTF 格式,涵盖了框架的使用指南和教程,帮助开发者快速上手。 6. `manual`:这个文件名可能是一个...

Global site tag (gtag.js) - Google Analytics