`
lilei821029
  • 浏览: 25627 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个简单的类代码生成器

阅读更多
花了一点点时间,写了一个类玩玩,希望有点用。

类是怎么用的呢?

比如:输入:


public className;
private String variable1;
private Integer variable2;
private Double variable3;



点击 Generate!,后,输出:


public className {
private String variable1;
private Integer variable2;
private Double variable3;
public String getVariable1()
{
return variable1;
}
public void setVariable1(String variable1)
{
this.variable1 = variable1;
}
public Integer getVariable2()
{
return variable2;
}
public void setVariable2(Integer variable2)
{
this.variable2 = variable2;
}
public Double getVariable3()
{
return variable3;
}
public void setVariable3(Double variable3)
{
this.variable3 = variable3;
}
}





哈哈,大家就知道它的用处了吧

源代码:

ClassGen.java com.jrock.util



package com.jrock.util;
/**
* 输入的字符串格式为
* 限定符 类名;
* 变量;变量;变量;...
* 变量格式为{限定符 数据类型 变量名}
* 其中: 限定符 (private/...) 不能省
* 类名 不能省
* 数据类型 (Integer/...) 不能省
* 变量名 不能省
* @version 1.0
*/
public class ClassGen {
public ClassGen() {
}
//去掉多余的空格
private static void dismissBlank(String[] array)
{
int len= array.length;
boolean over =false;
while(!over) {
over=true;
for (int i = 0; i < len; i++) {
if (array[i].equals("")) {
for (int j = i; j < len - 1; j++) {
array[j] = array[j + 1];
}
len--;over=false;
}
}
}
}
public static String outGetter(String parStr)
{
String[] array = parStr.split(" ");
if(array.length<3) return null;
dismissBlank(array);
String type = array[1];
String par = array[2];
StringBuffer result = new StringBuffer();
result.append("public " + type + " get" + par.substring(0,1).toUpperCase() + par.substring(1));
result.append("()\n{\n\t return " + par + ";\n}\n");
return result.toString();
}
public static String outSetter(String parStr)
{
String[] array = parStr.split(" ");
if(array.length<3) return null;
dismissBlank(array);
String type = array[1];
String par = array[2];
StringBuffer result = new StringBuffer();
result.append("public void set" + par.substring(0,1).toUpperCase() + par.substring(1));
result.append("(" + type + " " + par + ")\n{\n\t this."+ par + " = " + par + ";\n}");
return result.toString();
}
//获得函数的主体
public static String getClassContent(String in)
{
if(in==null) return "";
in=in.replace('\n',' ').trim();
if(in.equals("")) return "";
StringBuffer result = new StringBuffer();
String [] parArray = in.split(";");
if(parArray.length>0) {
//输出类名
result.append(parArray[0] + " {\n");
//输出变量
for (int i = 1; i < parArray.length; i++) {
result.append(parArray[i] + ";\n");
}
//输出setter和getter
for (int i = 1; i < parArray.length; i++) {
result.append(outGetter(parArray[i]) + "\n");
result.append(outSetter(parArray[i]) + "\n");
}
result.append("}");
}
return result.toString();
}
//测试用的
public static void main(String[] args) {
String inStr = "public className;\n" +
"private String variable1;\n" +
"private Integer variable2;\n" +
"private Double variable3;\n";
System.out.println(getClassContent(inStr));
}
}





GUI:

ClassGenApplication.java com.jrock.util



import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import com.jrock.util.ClassGen;
public class ClassGenApplication {
public Component createComponents() {
String inStr = "public className;\n" +
"private String variable1;\n" +
"private Integer variable2;\n" +
"private Double variable3;";
final JTextArea text1 = new JTextArea(inStr,20,40);
final JTextArea text2 = new JTextArea("",20,50);
text1.setFont(new java.awt.Font("Arial",java.awt.Font.PLAIN,20));
text2.setFont(new java.awt.Font("Arial",java.awt.Font.PLAIN,12));
// Create a scrollable text area
JScrollPane sp1 = new JScrollPane(text1);
JScrollPane sp2 = new JScrollPane(text2);
JButton button = new JButton("Generate!");
button.setMnemonic(KeyEvent.VK_I);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
text2.setText(
ClassGen.getClassContent(text1.getText()));
}
});
JPanel pane = new JPanel();
pane.setBorder(BorderFactory.createEmptyBorder(
20, //top
20, //left
200, //bottom
200) //right
);
pane.setLayout(new GridLayout(0, 1));
pane.add(sp1);
pane.add(button);
pane.add(sp2);
return pane;
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) { }
//Create the top-level container and add contents to it.
JFrame frame = new JFrame("类生成工具");
ClassGenApplication app = new ClassGenApplication();
Component contents = app.createComponents();
frame.getContentPane().add(contents, BorderLayout.CENTER);
//Finish setting up the frame, and show it.
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);
}
}




分享到:
评论

相关推荐

    C# 实体类代码 生成器

    比较简单的C# 实体类代码 生成器,这个只是执行文件,源代码请到http://heyant.com/html/Download58.html下载

    C#代码生成器

    .net代码生成器 C#代码生成器内置辅助类!!!一键生成含所有源码!!!

    动软代码生成器 修复单类代码生成器4个问题。

    修复单类代码生成器4个问题。 2.新增创建加载数据库时,表名过滤功能。 3.表名生成命名规则,字符串替换功能。 4.模板中字段排序方法公开。 5.字段默认值函数的处理。 6.导出的sql脚本中,单引号 '的问题。 7.工具-...

    oracle实体类代码生成器

    oracle实体类代码生成器,自己写的比较实用

    微信小程序 小工具类 二维码生成器 (源代码+截图)

    微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小...

    实体类代码生成器

    C#版本的实体类生成器

    C#代码生成器类生成器

    依据数据库表C#代码生成器类生成器,C#源

    excel生成sql语句和实体类代码生成器

    excel生成sql语句和实体类代码生成器

    写的一个简单的代码生成器

    生成的代码包括 1.POJO类,类的hibernate映射文件,DAO类,Manager类,spring的对hibernate封装的配置文件,如果你不使用webwork,只需要这些就行了 2.webwork的Action类,Action的资源文件,Action的校验文件,xwork.xml, ...

    Delphi类代码生成器

    开发工具开发语言:其他开发语言相关标签:delphi 生成器 详细描述: 能根据数据表的结构自动生成Dephi操作类代码,节省开发时间,提高开发效率,提高代码的可读性,也使代码维护方便很多

    nhibernate映射类代码生成器

    nhibernate映射类代码生成器 nhibernate映射类代码生成器 nhibernate映射类代码生成器 nhibernate映射类代码生成器

    C#实体类代码生成器(源代码)

    生成C#数据实体代码的源代码。可以根据自己的需求进行代码的更改。并可模仿写出数据访问类的代码生成工具

    简单的代码生成器

    最近边学习PetShop4.0边开发网站,发现有太多重复的东西了,于是就编写了这个简单的代码生成器。 架构是模仿PetShop4.0,所以DLL文件会有点多。。 目前只能生成Model类和简单的存储过程。 版本号: 0.1

    C#实体类代码生成器

    实体类代码生成器,可用于C#实体类代码生成,如基本三层架构,model层,sqlhelper等。

    java BO类和Dao类代码生成器

    自己写的一个BO层和Dao层代码生成器,首先创建数据库表,本工具根据创建的表自动生成操作数据库代码。资源里包含SqlServer所需jar包,如需要连接其它数据库请自行修改

    Model实体类代码生成器

    一款自动生成Model类的.cs文件生成器....

    代码生成器 代码生成器 Demo.zip

    使用代码生成器,只需要先按照下面的数据库设计规范设计好数据库,然后使用代码生成器就能一键生成项目代码,生成的代码有:实体类、DAO接口及实现类、Service接口及实现类、Controller代码框架。

    简单的代码生成器0.2

    最近边学习PetShop4.0边开发网站,发现有太多重复的东西,于是就编写了这个简单的代码生成器。 没什么技术含量,各位不要见笑了。 架构是模仿PetShop4.0,所以DLL文件会有点多。。 目前只能生成Model类和...

    java实体类代码生成器 带注释

    java 实体类 代码生成器 带注释

    mybatis代码生成器,Java实体类生成器

    mybatis代码生成器,Java实体类xml 文件生成器,MySQL数据库字段映射工具

Global site tag (gtag.js) - Google Analytics