JAVA教程之一个复杂的类代码天生器
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。花了一点点工夫,写了一个类玩玩,但愿有点用。类是怎样用的呢?
好比:输出:
publicclassName;
privateStringvariable1;
privateIntegervariable2;
privateDoublevariable3;
点击Generate!,后,输入:
publicclassName{
privateStringvariable1;
privateIntegervariable2;
privateDoublevariable3;
publicStringgetVariable1()
{
returnvariable1;
}
publicvoidsetVariable1(Stringvariable1)
{
this.variable1=variable1;
}
publicIntegergetVariable2()
{
returnvariable2;
}
publicvoidsetVariable2(Integervariable2)
{
this.variable2=variable2;
}
publicDoublegetVariable3()
{
returnvariable3;
}
publicvoidsetVariable3(Doublevariable3)
{
this.variable3=variable3;
}
}
哈哈,人人就晓得它的用途了吧
源代码:
ClassGen.javacom.jrock.util
packagecom.jrock.util;
/**
*输出的字符串格局为
*限制符类名;
*变量;变量;变量;...
*变量格局为{限制符数据范例变量名}
*个中:限制符(private/...)不克不及省
*类名不克不及省
*数据范例(Integer/...)不克不及省
*变量名不克不及省
*@version1.0
*/
publicclassClassGen{
publicClassGen(){
}
//往失落过剩的空格
privatestaticvoiddismissBlank(String[]array)
{
intlen=array.length;
booleanover=false;
while(!over){
over=true;
for(inti=0;i<len;i++){
if(array.equals("")){
for(intj=i;j<len-1;j++){
array=array;
}
len--;over=false;
}
}
}
}
publicstaticStringoutGetter(StringparStr)
{
String[]array=parStr.split("");
if(array.length<3)returnnull;
dismissBlank(array);
Stringtype=array;
Stringpar=array;
StringBufferresult=newStringBuffer();
result.append("public"+type+"get"+par.substring(0,1).toUpperCase()+par.substring(1));
result.append("()
{
return"+par+";
}
");
returnresult.toString();
}
publicstaticStringoutSetter(StringparStr)
{
String[]array=parStr.split("");
if(array.length<3)returnnull;
dismissBlank(array);
Stringtype=array;
Stringpar=array;
StringBufferresult=newStringBuffer();
result.append("publicvoidset"+par.substring(0,1).toUpperCase()+par.substring(1));
result.append("("+type+""+par+")
{
this."+par+"="+par+";
}");
returnresult.toString();
}
//取得函数的主体
publicstaticStringgetClassContent(Stringin)
{
if(in==null)return"";
in=in.replace(
,).trim();
if(in.equals(""))return"";
StringBufferresult=newStringBuffer();
String[]parArray=in.split(";");
if(parArray.length>0){
//输入类名
result.append(parArray+"{
");
//输入变量
for(inti=1;i<parArray.length;i++){
result.append(parArray+";
");
}
//输入setter和getter
for(inti=1;i<parArray.length;i++){
result.append(outGetter(parArray)+"
");
result.append(outSetter(parArray)+"
");
}
result.append("}");
}
returnresult.toString();
}
//测试用的
publicstaticvoidmain(String[]args){
StringinStr="publicclassName;
"+
"privateStringvariable1;
"+
"privateIntegervariable2;
"+
"privateDoublevariable3;
";
System.out.println(getClassContent(inStr));
}
}
GUI:
ClassGenApplication.javacom.jrock.util
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importcom.jrock.util.ClassGen;
publicclassClassGenApplication{
publicComponentcreateComponents(){
StringinStr="publicclassName;
"+
"privateStringvariable1;
"+
"privateIntegervariable2;
"+
"privateDoublevariable3;";
finalJTextAreatext1=newJTextArea(inStr,20,40);
finalJTextAreatext2=newJTextArea("",20,50);
text1.setFont(newjava.awt.Font("Arial",java.awt.Font.PLAIN,20));
text2.setFont(newjava.awt.Font("Arial",java.awt.Font.PLAIN,12));
//Createascrollabletextarea
JScrollPanesp1=newJScrollPane(text1);
JScrollPanesp2=newJScrollPane(text2);
JButtonbutton=newJButton("Generate!");
button.setMnemonic(KeyEvent.VK_I);
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
text2.setText(
ClassGen.getClassContent(text1.getText()));
}
});
JPanelpane=newJPanel();
pane.setBorder(BorderFactory.createEmptyBorder(
20,//top
20,//left
200,//bottom
200)//right
);
pane.setLayout(newGridLayout(0,1));
pane.add(sp1);
pane.add(button);
pane.add(sp2);
returnpane;
}
publicstaticvoidmain(String[]args){
try{
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
}catch(Exceptione){}
//Createthetop-levelcontainerandaddcontentstoit.
JFrameframe=newJFrame("类天生工具");
ClassGenApplicationapp=newClassGenApplication();
Componentcontents=app.createComponents();
frame.getContentPane().add(contents,BorderLayout.CENTER);
//Finishsettinguptheframe,andshowit.
frame.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
}
Thanks.
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 是一种使网页(Web Page)产生生动活泼画面的语言 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 是一种为 Internet发展的计算机语言 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 是一种使用者不需花费很多时间学习的语言
页:
[1]