|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,这是一个javabean天生器,使用一个文本文件(无妨称为bean界说文件)天生javabean。
开辟过程当中我们大概会用到良多数据对象(值对象),多数被封装成一个bean。固然各年夜
IDE都供应了便利天生这类数据bean的工具,但都是一步一步填对话框式的,不像这个,
这个能够在一个文件里界说多个Bean,一次天生一切bean。固然它也有范围性,今朝只会
复杂的天生private数据域和public的setter、getter;而且不会替你导进需要的包。但只管云云,
也能年夜小气便数据bean对照多,或bean字段对照多的使用。
bean界说文件(.bd)格局以下:
//这是正文,以"//"打头。
//用"#"暗示bean称号。
//正文不克不及和bean称号或数据字段写在统一行。
#MyBean1
inti
longl
Strings
#MyBean2
Stringuser
Stringpwd
#MyBean3
Objecto
...
...
importjava.io.*;
importjava.util.*;
publicclassCreateBean{
privateBufferedReaderin;
privateStringinputFile;
privateHashMapbeans=newHashMap();
privatestaticfinalcharbeanMark=#;
publicCreateBean(StringinputFileName){
inputFile=inputFileName;
try{
in=newBufferedReader(newFileReader(inputFileName));
}catch(FileNotFoundExceptione){
System.out.println("file"+inputFileName+"notfound!");
e.printStackTrace();
}
}
publicvoidgenerate(){
Stringln=null;
StringbeanName=null;
ArrayListproperties=newArrayList();
try{
ln=in.readLine().trim();//throwioexcption
while(ln!=null){
if(
(ln.length()<1)||
(ln.startsWith("//"))||//comments
(ln.charAt(0)!=beanMark&&ln.split("s+").length!=2)
){}
elseif(ln.charAt(0)==beanMark){
if(beanName!=null){
beans.put(beanName,properties);//savelastbeantohashMap
}
properties=newArrayList();
//gennewbeanname
beanName=upperFirst(ln.substring(1));
System.out.println("bean:"+beanName);
}
else{
System.out.println(" "+ln);
properties.add(ln);
}
ln=in.readLine();
if(ln==null){//lastbean
if(beanName!=null){
beans.put(beanName,properties);
}
}
else{
ln=ln.trim();
}
}//while
System.out.println(beans.size()+"beanstested...");
dumpBeans();
}catch(IOExceptione){
System.out.println("readfilefailed!");
}finally{
try{
if(in!=null)
in.close();
}catch(IOExceptione2){
System.out.println("closeinputfilefailed!");
e2.printStackTrace();
}
}
}
publicstaticStringupperFirst(Strings){
StringBufferbuf=newStringBuffer(s);
if(buf.charAt(0)>=a&&buf.charAt(0)<=z){
buf.setCharAt(0,(char)(buf.charAt(0)-32));
}
returnbuf.toString();
}
privatevoiddumpBeans(){
System.out.println("creating...");
StringBufferbuf=null;
Stringkey=null;
PrintWriterpw=null;
Iteratoritr=null;
SetkeySet=beans.keySet();
if(keySet!=null)
itr=keySet.iterator();
while(itr.hasNext()){
buf=newStringBuffer();
key=(String)itr.next();
ArrayListl=(ArrayList)beans.get(key);
buf.append("publicclass");
buf.append(key);
buf.append("{
");
//addproperties
for(inti=0;i<l.size();i++){
buf.append(" private");
buf.append((String)l.get(i));
buf.append(";
");
}
buf.append("
");
//addgetterandsetter
for(inti=0;i<l.size();i++){
//getter
Stringitem=(String)l.get(i);//like"inta"
Stringtype=item.split("s+",2)[0];//tokneeded!!!
Stringvar=item.split("s+",2)[1];
buf.append(" public"+type+"get");
buf.append(upperFirst(var));
buf.append("(){
returnthis.");
buf.append(var);
buf.append(";
}
");
//setter
buf.append(" publicvoidset");
buf.append(upperFirst(var));
buf.append("("+type+""+var+"){
this.");
buf.append(var);
buf.append("=");
buf.append(var);
buf.append(";
}
");
}
buf.append("}
");
//dumptoanamedfile
try{
pw=newPrintWriter(
newBufferedWriter(
newFileWriter(key+".java")));
pw.write(buf.toString());
pw.close();
}catch(IOExceptione){
System.out.println("createjavafilefailed!");
e.printStackTrace();
}
}
}
/********************************/
publicstaticvoidmain(String[]args)throwsException{
if(args.length<1){
System.out.println("usage:");
System.out.println(" javaCreateBeanyourInputFileName");
System.out.println("whereyourinputfileshouldlikethis:");
System.out.println("#myBean1");
System.out.println("intfield1");
System.out.println("longfield2");
System.out.println("Stringfiled3");
System.out.println("...
");
System.out.println("#myBean2");
System.out.println("charfield1");
System.out.println("Objectfield2");
System.out.println("...");
System.out.println("
...");
return;
}
System.out.println("begin...");
CreateBeancb=newCreateBean(args[0]);
cb.generate();
System.out.println("complete.");
}
}
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。 |
|