相关疑难解决方法(0)

用于生成Java源文件的Java API

我正在寻找一个生成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);
Run Code Online (Sandbox Code Playgroud)

然后,应在目标目录的子目录中找到java源文件.

有谁知道这样的框架?


编辑:

  1. 我真的需要源文件.
  2. 我也想填写方法的代码.
  3. 我正在寻找高级抽象,而不是直接字节码操作/生成.
  4. 我还需要一个对象树中的"类的结构".
  5. 问题域是通用的:生成大量非常不同的类,没有"共同结构".

解决方案
我根据您的答案发布了2个答案... 使用CodeModelEclipse JDT.

我在我的解决方案中使用了CodeModel,:-)

java eclipse code-generation

124
推荐指数
5
解决办法
5万
查看次数

为Eclipse编写一个新的重构插件?

有没有关于在Eclipse中实现新重构的好文档?具体来说,我想访问Java类的Java,进行一些非平凡的更改,并将结果保存回源文件.

到目前为止,我发现的唯一文档是(1)现有重构的源代码和(2)关于LTK和Java AST的一些文章:

我应该阅读其他任何文章或教程吗?

java eclipse plugins refactoring

21
推荐指数
1
解决办法
4698
查看次数

使用JDT获取完整的方法名称

我是eclipse插件开发的新手,我正在尝试将IMethod转换为完整方法名称的字符串表示形式.IE

my.full.package.ClassName.methodName(int param, String string)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我不得不亲自推出自己的解决方案.有没有更好的办法?

private static String getMethodFullName(IMethod iMethod)
{
    String packageString = "[Default Package]";
    try {
        IPackageDeclaration[] declarations = iMethod.getCompilationUnit().getPackageDeclarations();
        if(declarations.length > 0)
        {
            packageString = declarations[0].getElementName(); 
        }           
    } catch (JavaModelException e) {
    }

    String classString = iMethod.getCompilationUnit().getElementName();
    classString = classString.replaceAll(".java", "");

    String methodString = iMethod.getElementName() + "(";
    for (String type : iMethod.getParameterTypes()) {
        methodString += type + ",";
    }
    methodString += ")";

    return packageString + "." + classString + "." + methodString;
}
Run Code Online (Sandbox Code Playgroud)

java eclipse-plugin eclipse-jdt

5
推荐指数
2
解决办法
3099
查看次数