`
lilei821029
  • 浏览: 26085 次
  • 性别: 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#编程语言中的实体类代码。实体类在软件开发中扮演着重要角色,它们是业务逻辑层和数据访问层之间的桥梁,通常用于封装数据库表或API响应的数据结构。使用...

    C#代码生成器

    代码生成器VS2008是Visual Studio 2008版本下的一个插件,它专为.NET Framework 3.5设计,提供了一种直观的界面来生成C#代码。开发者可以直接在IDE中使用,无需离开Visual Studio环境,提升了开发的便利性。 四、C#...

    java BO类和Dao类代码生成器

    通过这个Java BO类和DAO类代码生成器,开发者可以更专注于业务逻辑的设计,而不用花费大量时间在重复的代码编写上,这对于快速开发和迭代项目尤其有帮助。同时,这种自动化的方式也有助于保持代码的一致性和规范性。

    oracle实体类代码生成器

    Oracle实体类代码生成器是一种工具,它能够自动化地根据数据库中的表结构生成对应的Java实体类代码,极大地提高了开发效率,避免了手动编写这些基础代码的繁琐工作。在Oracle数据库中,实体类通常对应于数据库中的表...

    C# 实体类代码 生成器

    在描述中提到的这个C#实体类代码生成器是一个执行文件,这意味着用户可以直接运行它而无需编译源代码。不过,如果需要对生成的代码进行定制或改进,源代码可以从指定的网址(http://heyant.com/html/Download58.html...

    Delphi类代码生成器

    《Delphi类代码生成器——高效开发的利器》 Delphi类代码生成器是一款专为Delphi开发者设计的工具,其主要功能是根据数据库数据表的结构,自动生成相应的Delphi类代码。这款生成器旨在简化开发过程,提高开发效率,...

    一个简单的源代码生成器

    这个“一个简单的源代码生成器”是专为初学者设计的,旨在帮助他们快速理解和实践代码生成的概念。 源代码生成器的基本工作原理是通过模板引擎或者元编程技术,根据预设的规则和用户输入,动态生成符合编程语言语法...

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

    "C#实体类代码生成器"是开发者的一个利器,它可以帮助程序员快速生成与数据库表对应的C#实体类代码,从而节省大量的手动编写时间,提高开发效率。 实体类在软件开发中扮演着关键角色,它们是业务逻辑和数据库之间的...

    C#做的简单的代码生成器源码

    同时,对于进一步提升开发效率,如自动化构建、元编程等领域,这个简单的代码生成器也提供了一个基础的实践案例。 总的来说,虽然这个代码生成器可能并不完善,但它揭示了代码生成的基本思路和实现方式,对于理解和...

    代码生成器 代码生成器 代码生成器

    在压缩包子文件"aoshiyuancode.exe"中,我们可以推测这是一个Windows平台下的可执行程序,可能是某款代码生成器软件的安装包。这样的软件通常具有直观的图形用户界面,用户可以通过填写参数、选择模板来生成所需代码...

    简单的代码生成器

    【标题】"简单的代码生成器"是一个工具,其主要功能是根据SQL Server数据库中的表结构自动生成对应的实体类和数据访问层代码。这样的工具在软件开发过程中极大地提高了开发效率,减少了手动编写这些基础代码的工作量...

    java/.net实体类代码生成器

    Java 和 .NET 实体类代码生成器是一种工具,它能够极大地提高开发效率,尤其是在处理大量数据库操作时。这种工具能够自动从SQL Server数据库中提取表结构,并根据这些表的信息生成对应的Java或.NET实体类。实体类是...

    C#代码生成器(包括T-sql语句,和实体类代码)

    总结起来,"C#代码生成器(包括T-sql语句,和实体类代码)"是一个高效开发工具,它结合了反射、动态加载和代码生成等技术,帮助开发者快速生成T-SQL语句和实体类代码,降低了开发复杂性和维护成本。对于.NET开发者来...

    C#代码生成器类生成器

    本主题聚焦于"C#代码生成器类生成器",这是一个工具,它能够自动生成C#源代码,帮助开发者根据数据库表结构快速构建业务模型类。这种工具极大地提高了开发效率,减少了手动编写重复代码的时间。 首先,我们要理解...

    简单的java代码生成器

    【描述】"一个简单的java代码生成器,初学者相对有用"表明这个工具对于刚刚接触Java编程的初学者尤其有帮助。初学者往往需要花费大量时间在编写基础代码上,而代码生成器则可以帮助他们快速构建项目框架,理解软件...

    .net C#代码生成器

    3. **用户界面**:为了方便非技术用户使用,代码生成器通常会提供一个图形用户界面,允许用户输入必要的信息,如数据库连接字符串、类名、接口选择等,然后生成对应的代码。 4. **自定义扩展**:高级的代码生成器还...

    mybatis 代码生成器

    MyBatis 代码生成器是一款高效实用的工具,旨在帮助开发者自动创建常见的CRUD操作代码,从而节省在数据库交互上花费的时间,提高开发效率。它支持多种数据库,包括Oracle和MySQL,这意味着无论你使用哪种数据库,都...

    UC广播代码生成器 51vv广播代码生成器

    51vv广播代码生成器可能是另一个工具,可能服务于51vv网站或社区,用于生成类似的广播事件处理代码。 首先,我们来详细讨论广播接收者(Broadcast Receiver)的概念。在Android开发中,广播接收者是一种组件,它能...

Global site tag (gtag.js) - Google Analytics