当前位置: 首页 > 面试题库 >

我可以通过编程调用任何Eclipse重构API吗?

蓬威
2023-03-14
问题内容

我需要广泛地重构代码。我知道可以从Eclipse IDE内部重构类。但是我可以在Java项目中使用任何API,以便通过代码动态重构项目吗?

我需要一些有关如何实现以下目标的想法:一个程序,该程序调用所有Eclipse重构以重命名和循环移动,以一次重构整个项目!

我不想通过扩展重构类来引入新的重构类型。我只想以编程方式调用它们。


问题答案:

下面的答案很好,但是对于那些需要更庞大,更美味的东西的人们,我给出了更广阔的视野cake

    RefactoringStatus status = new RefactoringStatus();
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    IProject[] projects = root.getProjects();

然后:

for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
    IType primary = unit.findPrimaryType();
    IMethod[] methods = primary.getMethods();
    int i = 1;
    for (IMethod method : methods) {
        if (method.isConstructor()) {
            continue;
        }
    makeChangetoMethods(status, method,"changedMethodVersion_" + i);
    ++i;
    }
}

之后:

IProgressMonitor monitor = new NullProgressMonitor();
status = new RefactoringStatus();
Refactoring refactoring = performMethodsRefactoring(status, methodToRename, newName);

然后:

Change change = refactoring.createChange(monitor);
change.perform(monitor);

在下面找到用于设置的代码descriptor

String id = IJavaRefactorings.RENAME_METHOD;
RefactoringContribution contrib = RefactoringCore.getRefactoringContribution(id);
RenameJavaElementDescriptor desc = contrib.createDescriptor();
desc.setUpdateReferences(true);
desc.setJavaElement(methodToRename);
desc.setNewName(newName);
desc.createRefactoring(status);


 类似资料:
  • 问题内容: 如何通过 JNI 从Node.js调用Java ?有没有例子? 问题答案: 看起来很棘手。Node.JS在Google Chrome JavaScript引擎V8上运行。您将要做的是创建一个V8 C ++绑定(一个v8 c ++崩溃课程 显示了一个示例),该绑定启动JVM并执行所有JNI处理。 我认为让JavaServer和Node.js通过网络进行通信可能更好(有人写了一个使用Rab

  • 问题内容: 有人知道是否可以通过Java中的Google api以编程方式创建Google帐户。 问题答案: (ish) 借助Admin SDK Directory API,您可以创建可与Google工具(Gmail,日历等)一起使用的帐户,但不能使用@ gmail.com / @ googlemail.com帐户。 当新用户添加到网络和类似情况时,公司可以使用它自动为在线Google工具创建帐户

  • 问题内容: 我将matplotlib文件另存为.tiff图像。然后,我希望能够打开一个excel文件并将其粘贴到此处。 openpyxl似乎不支持图像嵌入。xlwt可以,但仅bmp。 或者,如果我可以以编程方式将tiff转换为bmp,那也可能会有所帮助。 欢迎您提出任何想法。 问题答案: 这是我从网络上的两个不同链接中找到的,对我来说效果很好。Matplotlib允许保存png文件,这是我在这里使

  • 问题内容: 基本上,我们在React类组件的生命周期方法中进行API调用,如下所示 但是在React v16.7.0中引入了钩子之后,它几乎都像功能组件一样 我的查询是,我们到底需要在带有钩子的功能组件中进行API调用? 我们有什么类似的方法吗? 问题答案: 是的,有一个类似(但不相同!)的钩子替代品,它就是钩子。 其他答案并不能真正回答您在哪里可以进行API调用的问题。您可以通过使用并将 空数组

  • 问题内容: 我在另一个构建工具的情况下使用Maven(leiningen为Clojure的,但是这不应该事),我想知道我会怎么称呼像一个插件的依赖:集结类路径编程(即通过Maven- API,而不是通过-command)。 问题答案: 请参阅如何从maven-plugin-testing- harness实现org.apache.maven.plugin.testing.AbstractMojoT

  • 问题内容: 我只碰了芹菜和Java两天。:( 现在,我有一个Java客户端通过Rabbitmq发送任务的任务。芹菜将是处理任务的工人。 我知道Python-> rabbitmq-> celery很容易。但是我可以通过java-> rabbitmq-> celery来做到这一点吗? 草案的想法是通过JSON序列化Java函数,然后通过Rabbitmq发送,然后通过celery处理。 最好有示例代码并