第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Java API生成Java源文件

Java API生成Java源文件

HUH函數(shù) 2019-11-22 12:52:15
我正在尋找一個(gè)生成Java源文件的框架。類似于以下API:X clazz = Something.createClass("package name", "class name");clazz.addSuperInterface("interface name");clazz.addMethod("method name", returnType, argumentTypes, ...);File targetDir = ...;clazz.generate(targetDir);然后,應(yīng)在目標(biāo)目錄的子目錄中找到一個(gè)Java源文件。有人知道這樣的框架嗎?編輯:我真的需要源文件。我也想填寫這些方法的代碼。我正在尋找一個(gè)高級抽象,而不是直接的字節(jié)碼操作/生成。我還需要對象樹中的“類的結(jié)構(gòu)”。問題域很一般:生成大量非常不同的類,而沒有“通用結(jié)構(gòu)”。解決方案我已經(jīng)根據(jù)您的答案發(fā)布了2個(gè)答案... CodeModel和Eclipse JDT。我在解決方案中使用了CodeModel :-)
查看完整描述

3 回答

?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

Eclipse JDT的AST找到了解決方案

謝謝,Giles。


例如,使用以下代碼:


AST ast = AST.newAST(AST.JLS3);

CompilationUnit cu = ast.newCompilationUnit();


PackageDeclaration p1 = ast.newPackageDeclaration();

p1.setName(ast.newSimpleName("foo"));

cu.setPackage(p1);


ImportDeclaration id = ast.newImportDeclaration();

id.setName(ast.newName(new String[] { "java", "util", "Set" }));

cu.imports().add(id);


TypeDeclaration td = ast.newTypeDeclaration();

td.setName(ast.newSimpleName("Foo"));

TypeParameter tp = ast.newTypeParameter();

tp.setName(ast.newSimpleName("X"));

td.typeParameters().add(tp);

cu.types().add(td);


MethodDeclaration md = ast.newMethodDeclaration();

td.bodyDeclarations().add(md);


Block block = ast.newBlock();

md.setBody(block);


MethodInvocation mi = ast.newMethodInvocation();

mi.setName(ast.newSimpleName("x"));


ExpressionStatement e = ast.newExpressionStatement(mi);

block.statements().add(e);


System.out.println(cu);

我可以得到以下輸出:


package foo;

import java.util.Set;

class Foo<X> {

  void MISSING(){

    x();

  }

}


查看完整回答
反對 回復(fù) 2019-11-22
  • 3 回答
  • 0 關(guān)注
  • 801 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號