仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 380|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA教程之一个复杂的类代码天生器

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。花了一点点工夫,写了一个类玩玩,但愿有点用。

类是怎样用的呢?

好比:输出:


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[i].equals("")){
for(intj=i;j<len-1;j++){
array[j]=array[j+1];
}
len--;over=false;
}
}
}
}
publicstaticStringoutGetter(StringparStr)
{
String[]array=parStr.split("");
if(array.length<3)returnnull;
dismissBlank(array);
Stringtype=array[1];
Stringpar=array[2];
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[1];
Stringpar=array[2];
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[0]+"{
");
//输入变量
for(inti=1;i<parArray.length;i++){
result.append(parArray[i]+";
");
}
//输入setter和getter
for(inti=1;i<parArray.length;i++){
result.append(outGetter(parArray[i])+"
");
result.append(outSetter(parArray[i])+"
");
}
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年代初开发。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-20 22:07:19 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
谁可相欹 该用户已被删除
板凳
发表于 2015-1-29 06:15:43 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
愤怒的大鸟 该用户已被删除
地板
发表于 2015-1-31 12:55:02 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
活着的死人 该用户已被删除
5#
发表于 2015-2-2 22:34:15 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
透明 该用户已被删除
6#
发表于 2015-2-6 08:21:21 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
柔情似水 该用户已被删除
7#
发表于 2015-2-6 10:56:42 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
深爱那片海 该用户已被删除
8#
发表于 2015-2-10 17:30:51 | 只看该作者
是一种为 Internet发展的计算机语言
兰色精灵 该用户已被删除
9#
发表于 2015-2-26 19:28:26 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-8 16:47:04 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
简单生活 该用户已被删除
11#
发表于 2015-3-16 06:08:34 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
海妖 该用户已被删除
12#
发表于 2015-3-22 20:30:31 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 15:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表