最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JAVA代碼生成如何實(shí)現(xiàn) Java代碼生成工具

如何使用Freemarker生成java代碼

Freemarker是一個(gè)模板框架。我們可以通過Freemarker進(jìn)行代碼生成或頁面的靜態(tài)生成。 現(xiàn)在簡單的說一下怎樣使用Freemarker Freemarker的主要生成類

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)睢陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

public boolean generate(String templateFileName, Map data,

String fileName) {

try {

//取得模板的位置

String templateFileDir=templateFileName.substring(0, templateFileName.lastIndexOf("/"));

//取得模板的名字

String templateFile=templateFileName.substring(templateFileName.lastIndexOf("/"), templateFileName.length());

//取得生成文件的路徑

String genFileDir=fileName.substring(0, fileName.lastIndexOf("/"));

Template template = ConfigurationHelper.getConfiguration(templateFileDir).getTemplate(templateFile);

File fileDir=new File(genFileDir);

org.apache.commons.io.FileUtils.forceMkdir(fileDir);

File output = new File(fileName);

if(output.exists()){

//如何代碼已存在不重復(fù)生成

return false;

}

Writer writer = new FileWriter(output);

template.process(data, writer);

writer.close();

} catch (TemplateException e) {

e.printStackTrace();

return false;

} catch (IOException e) {

e.printStackTrace();

return false;

}

return true;

}

代碼中的Map 是模板所需要的數(shù)據(jù),我們可以通過面向?qū)ο竦姆椒ò褦?shù)據(jù)存在模板中public boolean genDaoInterface(String fileName){

DaoModel daoModel=new DaoModel();

//設(shè)置Dao實(shí)現(xiàn)類的包名

daoModel.setPackageName(DaoConstant.PACKAGE);

//取得接口名

String className=StringUtils.substringBefore(fileName,".");

//設(shè)置接口名

daoModel.setClassName(className);

MapString, Object data = new HashMapString, Object();

data.put("model", daoModel);

//設(shè)置生成的位置

String filePath=new String("src/"+package2path(DaoConstant.PACKAGE)+"/"+fileName);

//代碼生成

return super.generate(DaoConstant.INTERFACE_TEMPLATE, data, filePath);

}

data.put("model", daoModel);由這句代碼可看出我們將可以在模板中直接調(diào)用這些數(shù)據(jù)package ${model.packageName};

public interface ${model.className} extends BaseHibernateDao {

}

Java進(jìn)階之 怎么自動(dòng)生成代碼

myeclipse沒有直接的快捷鍵自動(dòng)生成構(gòu)造方法,可以有快捷鍵彈出source,接著點(diǎn)擊自動(dòng)生成構(gòu)造方法的菜單。

具體操作如下:工具里快捷鍵alt+shift+s

就彈出來Generate

Constructor

using

Fields

用java如何用代碼實(shí)現(xiàn)動(dòng)態(tài)生成JLabel

String[] str={"名字1","名字2","名字3"};

for(int i=0;iv.length;i++){

JLabel lbl = new JLabel(str[i]);

int x=i%4*80+40; //4個(gè)一排 間隔80 第一個(gè)x從40開始

int y=i/4*40+40;

lbl[i].setBounds(x, y, 80, 20);

panel.add(chb[i]);

}

Java動(dòng)態(tài)生成代碼

可以的,我說說大概思路,很簡單,你自己具體實(shí)現(xiàn)吧,把代碼寫給你沒意義的:

1.將你這段字符串輸出到一個(gè)文件里,用Java類文件的方式命名。

2.調(diào)用外部javac命令將該文件編譯。

3.用類加載器(ClassLoad)動(dòng)態(tài)加載新的class文件并用Class.forName()注冊該類,然后就可以正常使用了。

上面的每一步都能在baidu中找到實(shí)現(xiàn)方法,自己發(fā)揮吧。

怎么用java代碼來生成一個(gè)類,比如說我現(xiàn)在有一個(gè)接口IA,怎么用代碼來生成一個(gè)文件A.java,類A實(shí)現(xiàn)這個(gè)IA

正則表達(dá)式分析文件就可以了……

再加個(gè)狀態(tài)機(jī)就好…

當(dāng)然在處理代碼字符串之前,先要把所有的注釋部分刪除掉,包括//和/* */部分

import java.util.regex.*;

public class InterfaceAnalyzer {

public static void main(String[] args) {

interface_context =

"package com.app.test;\n"

+"public interface IA {\n"

+" public abstract void a();\n"

+" public abstract void b();\n"

+"}";

interface_name = "";

class_name = "A";

class_implement = "public class "+class_name+" implements ";

pattern = Pattern.compile("[\\w_\\.]+");

match = pattern.matcher(interface_context);

while(match.find()) {

stateMachine(match.group());

}

class_implement += ") {\n\t}\n}";

System.out.println(class_implement);

}

public static void stateMachine(String word) {

switch(status) {

case 0:

if("package".equals(word)) {

status = 1;

} else if("interface".equals(word)) {

status = 2;

}

break;

case 1: // get package name

package_name = word;

class_implement += package_name+".";

status = 0;

break;

case 2: // get interface name

interface_name = word;

class_implement += interface_name + "{\n";

status = 3;

break;

case 3: // start a member

if("public".equals(word) || "private".equals(word) || "protected".equals(word)) {

member_access_type = word;

status = 4;

}

break;

case 4: // get a method that needs to override

if("abstract".equals(word)) {

status = 5;

class_implement += "\t" + member_access_type + " ";

} else {

status = 3; // not a method member

}

break;

case 5: // get member type

member_type = word;

class_implement += member_type + " ";

status = 6;

break;

case 6: // get member name

member_name = word;

class_implement += member_name + "(";

status = 7;

break;

case 7: // get parameter type

if("public".equals(word) || "private".equals(word) || "protected".equals(word)) {

member_access_type = word;

class_implement += ") {\n\t}\n";

status = 4;

} else {

para_type = word;

class_implement += ", " + para_type + " ";

status = 8;

}

break;

case 8: // get parameter name

para_name = word;

class_implement += para_name;

status = 8;

break;

}

}

private static int status;

private static String interface_context;

private static String package_name;

private static String interface_name;

private static String class_name;

private static String class_implement;

private static String member_name;

private static String member_type;

private static String member_access_type;

private static String para_name;

private static String para_type;

private static Pattern pattern;

private static Matcher match;

}

java代碼生成器能生成c語言代碼嗎?用什么方法能實(shí)現(xiàn)呢?

按照我的理解,可以的,代碼生成器是跨平臺(tái),而且是跨語言的(至少是跨文本語言的,UML暫時(shí)不好說,)。

代碼生成器作為一種開發(fā)工具,一般不直接作為程序的一部分,通常也不直接或間接(如通過AOP)被程序調(diào)用,他是通過編程的方式生成所需要的代碼,然后將生成的代碼作為源文件,復(fù)制到開發(fā)工具的代碼區(qū),然后進(jìn)行編譯。由于代碼生成器是在編譯之前運(yùn)行的,因此它可以跨語言,你不但可以用代碼生成器生成高級語言,也可以生成匯編語言,甚至機(jī)器碼(0、1代碼)。

但編寫代碼生成器是一個(gè)難點(diǎn),它需要你了解目標(biāo)編程語言的語法。如果別人已經(jīng)把你需要的代碼生成器寫好了,你只需按要求使用即可,此時(shí)就不需要了解目標(biāo)編程語言的語法。

JNI是通過Java調(diào)用C語言(或其他語言,一般是C),它的實(shí)現(xiàn)機(jī)制與代碼生成器不同(JNI是通過代碼調(diào)用實(shí)現(xiàn)功能,而代碼生成器是生成代碼,復(fù)制代碼進(jìn)行使用),由于C是底層語言,一些底層操作單靠Java無法實(shí)現(xiàn),所以才需要JNI。

以上是我對代碼生成器的個(gè)人理解,雖然提問時(shí)間已過了很久,但依然希望能對你及其他網(wǎng)友有所幫助。


新聞標(biāo)題:JAVA代碼生成如何實(shí)現(xiàn) Java代碼生成工具
文章網(wǎng)址:http://fisionsoft.com.cn/article/dodgced.html