随笔分类 -  Java

摘要:Hibernate的映射配置单如下:<?xml version="1.0" encoding="GBK"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="ext.ecl 阅读全文
posted @ 2012-06-07 14:51 荒土 阅读(2712) 评论(0) 推荐(0) 编辑
摘要:最近计划用插件化的hibernate和嵌入式数据库来完成一些功能,目前使用的数据库是HsqlDB和Derby。hibernate独立一个插件出来,mapping信息在本插件内维护,数据库的cfg信息则由数据库插件维护。要解决的事情很多,比如hibernate的在插件里的寻址问题和数据库的配置问题。刚刚开始这些工作,写一些心得体会。先说HsqlDB在插件里的配置方法:需要一个hsqldb包,我使用的版本是hsqldb-1.8.0.1.jar,把该jar包放置在插件的lib文件夹下,然后在Manifest.MF文件->Runtime->ClassPath处导入,之后Exported P 阅读全文
posted @ 2012-05-23 15:19 荒土 阅读(828) 评论(0) 推荐(0) 编辑
摘要:早前一直对单例模式和静态工具类的功能重叠有些疑惑,昨天做了一个功能,忽然发现了一些单例可以实现但是静态工具类无法满足的需求。我有一个接口IAuthorization:View Code /** * 所有需要配置权限的功能块都必须实现本接口 * * @author caiyu * @date Nov 16, 2012 9:36:49 AM * */public interface IAuthorization { // 权限开关 false有验证,true无验证 public static final boolean open = false; String XML_NEW... 阅读全文
posted @ 2012-05-22 09:59 荒土 阅读(326) 评论(0) 推荐(1) 编辑
摘要:当一个类有可能会和其他类发生比较的时候,我们会重写equals方法,但大多数情况下,都忽略了重写hashCode方法。这里说一下重写hashCode的必要性。当我们使用HashSet或者HashMap的时候,在比对value|key是否存在时,会调用hashCode方法。注意,hashSet的contains方法其实是依赖于HashMap的containsKey方法的。我们来看下containsKey方法的实现: public boolean containsKey(java.lang.Object paramObject) { return (getEntry(paramObjec... 阅读全文
posted @ 2012-04-27 11:18 荒土 阅读(5202) 评论(0) 推荐(1) 编辑
摘要:先列出一个类:package usage._of._final;public class ClassWithOutFinal { public void method1(int i) { System.out.println(2 * method2(i)); } public int method2(int i) { return i; }}该类有两个方法,method1调用到了method2,该类并没有被final修饰,也没有文档说明method1的结果是被method2影响的。再来看的效果:package usage._of._final... 阅读全文
posted @ 2012-04-25 10:04 荒土 阅读(343) 评论(0) 推荐(0) 编辑
摘要:这里利用了Array.newInstance(..)方法,但还有一个问题,当List的长度为0的时候,是获得不了T的具体class的。好在长度为0的数组没有意义,所以干脆返回了null。代码如下: public static <T> T[] getArray(List<T> collection) { if (collection == null || collection.size() == 0) return null; @SuppressWarnings("unchecked") T[] tArray = ((T[])... 阅读全文
posted @ 2012-03-30 15:03 荒土 阅读(565) 评论(3) 推荐(1) 编辑
摘要:abstract描述的类即是抽象类,描述的方法即是抽象方法。被此关键字描述的类,不能直接实例化,需要匿名。如果一个类里面包含抽象方法,则该类必须声明为抽象类。抽象方法没有实现,子类如果不是抽象类,则必须实现父类的抽象方法。以上差不多就是抽象类的概念和注意事项。之前一直的理解就是,抽象类和接口的作用类似,都是用于规范和定义实现类的。直到昨天才想到了抽象类的另外作用,是接口做不到的。代码如下:public abstract class CT1 { public CT1() { System.out.println("CT1:" + this.getClass()); } ... 阅读全文
posted @ 2012-03-28 10:05 荒土 阅读(4819) 评论(0) 推荐(1) 编辑
摘要:itext version 2.1.7itext操作rtf文档其实还是挺方便的。itext为图片操作提供了一个类com.lowagie.text.Image,使用方法如下: static Image createImage(URL path) { Image image; try { image = Image.getInstance(path); image.setAlignment(Image.UNDERLYING); image.scaleAbsolute(400, 320); ... 阅读全文
posted @ 2012-03-22 17:04 荒土 阅读(2296) 评论(0) 推荐(0) 编辑
摘要:标题即是在文档在大纲里的目录分级。itext 2.7之后才有了该功能。具体实现方式如下: FONT_PROJECT = RtfParagraphStyle.STYLE_HEADING_1; FONT_APPLICATION = RtfParagraphStyle.STYLE_HEADING_2; FONT_TYPE = RtfParagraphStyle.STYLE_HEADING_3;com.lowagie.text.rtf.style.RtfParagraphStyle类继承自RtfFont,RtfFont又继承自Font。... 阅读全文
posted @ 2012-03-21 15:55 荒土 阅读(7705) 评论(0) 推荐(0) 编辑
摘要:看了上一篇《Java泛型之一》,再来学习泛型方法就容易了。代码如下:package generic;/** * 泛型方法测试 * * @author caiyu * */public class GenMethod { public static <T> void display(T t) { System.out.println(t.getClass()); }}首先,泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。然后,和泛型类一样,可以声明多个泛型,用逗号隔开。先看看效果,调用display/... 阅读全文
posted @ 2012-03-09 11:16 荒土 阅读(94131) 评论(5) 推荐(2) 编辑
摘要:“泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。” 1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。 2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。 3、泛型的类型参数可以有多个。 4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。 5、泛型的参数类型还可以是通配符类型。例如Class<?> classTy 阅读全文
posted @ 2012-03-09 10:43 荒土 阅读(6405) 评论(2) 推荐(0) 编辑
摘要:目前用的POI版本为3.8.0beta5Excel的相关类基本以HSSF开头,下面列举几个常用类:HSSFWorkbook:工作簿,对应Excel文件HSSFSheet:表单,对应Excel的表单HSSFRow:行,对应Excel的每一行HSSFCell:单元格,对应Excel的单元格HSSFCellStyle:单元格样式,用于定义每个单元格的颜色、边框、字体、字号等等创建的次序应该为HSSFWorkbook -> HSSFSheet -> HSSFRow-> HSSFCell行高定义由Row决定,列宽由Sheet的columnWidth决定。columnWidth的内容是按 阅读全文
posted @ 2012-03-07 17:15 荒土 阅读(2057) 评论(0) 推荐(0) 编辑
摘要:首先我们需要的是itext.jar包。itext是一个开源的rtf、pdf读写项目,属于sourceforge。rtf即是Rich Text Format,由微软公司开发的跨平台文档格式,缺点在于保存的大小会比较大,可能是由于考虑了兼容性的关系。它的读写方式是比较通用的,无论是写rtf、pdf还是html,都有统一的Document,不同的格式有不同的写入器。如RTFWriter\PDFWriter。下面记录几个概念:1、 Font,字体对象2、 Chunk,文本块,处理文本的最小单位,可以设置字体,颜色,等。3、 Phrase,短语,由一个或多个Chunk组成。4、 Paragraph,段落 阅读全文
posted @ 2012-03-07 17:11 荒土 阅读(1132) 评论(2) 推荐(0) 编辑