Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在eclipse插件开发中以编程方式创建一个实现单独接口的java类_Eclipse_Class_Plugins_New Operator - Fatal编程技术网

如何在eclipse插件开发中以编程方式创建一个实现单独接口的java类

如何在eclipse插件开发中以编程方式创建一个实现单独接口的java类,eclipse,class,plugins,new-operator,Eclipse,Class,Plugins,New Operator,朋友们 现在我们正在开发一个eclipse插件,它包含一个用于生成服务接口的操作及其impl存根 现在接口已经生成,我想使用EclipseJDT创建一个java类来实现单独的接口,但不知道如何实现 我们掌握的信息: 接口名、impl类名、packagename和包含它们的java项目 提前感谢您的帮助。快速浏览一下new class wizard是如何实现的,似乎没有公共的易于使用的API。您可以查看org.eclipse.jdt.ui.wizards.NewTypeWizardPage.cre

朋友们

现在我们正在开发一个eclipse插件,它包含一个用于生成服务接口的操作及其impl存根

现在接口已经生成,我想使用EclipseJDT创建一个java类来实现单独的接口,但不知道如何实现

我们掌握的信息: 接口名、impl类名、packagename和包含它们的java项目


提前感谢您的帮助。

快速浏览一下new class wizard是如何实现的,似乎没有公共的易于使用的API。您可以查看
org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createType(IProgressMonitor)
方法来了解jdt本身是如何创建新类的


应该可以扩展
org.eclipse.jdt.ui.wizards.NewTypeWizardPage
,这样您就可以利用
createType()
方法。

快速浏览一下新类向导是如何做到这一点的,似乎没有公共的易于使用的API。您可以查看
org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createType(IProgressMonitor)
方法来了解jdt本身是如何创建新类的


应该可以扩展
org.eclipse.jdt.ui.wizards.NewTypeWizardPage
,这样您就可以利用
createType()
方法。

可能需要做的最简单的步骤就是将源内容生成到正确放置的
IFile
中。例:

public Object execute(ExecutionEvent event) throws ExecutionException {
    final String PACKAGE_PATH = "z.ex/src/z/ex/go";
    final String CONTENT = "package z.ex.go;\n"
            + "public class RunAway {\npublic static void main(String[] args) {\n"
            + "System.out.println(\"Run Away\");\n}\n}\n";
    final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    final IResource packageResource = root.findMember(PACKAGE_PATH);
    if (packageResource instanceof IFolder) {
        IFolder packageFolder = (IFolder) packageResource;
        final IFile file = packageFolder.getFile("RunAway.java");
        try {
            if (!file.exists()) {
                file.create(new ByteArrayInputStream(CONTENT.getBytes()),
                        true, new NullProgressMonitor());
            } else {
                file.setContents(
                        new ByteArrayInputStream(CONTENT.getBytes()),
                        IFile.FORCE | IFile.KEEP_HISTORY,
                        new NullProgressMonitor());
            }
        } catch (CoreException e) {
            e.printStackTrace();
        }
    }
    return null;
}

有关类似于NewTypeWizardPage并使用一些JDT API的较小示例,请参阅。

您可能需要做的最简单的步骤就是将源内容生成到正确放置的
IFile
中。例:

public Object execute(ExecutionEvent event) throws ExecutionException {
    final String PACKAGE_PATH = "z.ex/src/z/ex/go";
    final String CONTENT = "package z.ex.go;\n"
            + "public class RunAway {\npublic static void main(String[] args) {\n"
            + "System.out.println(\"Run Away\");\n}\n}\n";
    final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    final IResource packageResource = root.findMember(PACKAGE_PATH);
    if (packageResource instanceof IFolder) {
        IFolder packageFolder = (IFolder) packageResource;
        final IFile file = packageFolder.getFile("RunAway.java");
        try {
            if (!file.exists()) {
                file.create(new ByteArrayInputStream(CONTENT.getBytes()),
                        true, new NullProgressMonitor());
            } else {
                file.setContents(
                        new ByteArrayInputStream(CONTENT.getBytes()),
                        IFile.FORCE | IFile.KEEP_HISTORY,
                        new NullProgressMonitor());
            }
        } catch (CoreException e) {
            e.printStackTrace();
        }
    }
    return null;
}

有关类似于NewTypeWizardPage并使用一些JDT API的较小示例,请参阅。

您可以使用新建类向导创建类

这将提示用户输入类名等。您可以初始化向导页面的值。下面我只设置源文件夹(并告诉向导它无法更改,因此第二个
false
参数)。您可能还需要设置接口和可能的包

    OpenNewClassWizardAction wizard = new OpenNewClassWizardAction();
    wizard.setOpenEditorOnFinish(false);
    NewClassWizardPage page = new NewClassWizardPage();
    page.setPackageFragmentRoot(sourceFolder, false);
    wizard.setConfiguredWizardPage(page);
    wizard.run();
    return (IType) wizard.getCreatedElement();

希望有帮助

您可以使用新建类向导创建类

这将提示用户输入类名等。您可以初始化向导页面的值。下面我只设置源文件夹(并告诉向导它无法更改,因此第二个
false
参数)。您可能还需要设置接口和可能的包

    OpenNewClassWizardAction wizard = new OpenNewClassWizardAction();
    wizard.setOpenEditorOnFinish(false);
    NewClassWizardPage page = new NewClassWizardPage();
    page.setPackageFragmentRoot(sourceFolder, false);
    wizard.setConfiguredWizardPage(page);
    wizard.run();
    return (IType) wizard.getCreatedElement();

希望有帮助

使用创建整个java文件。首先创建AST,然后将其写入java文件。这可能看起来是一项繁重的工作,但却是最好的。您将拥有完全的控制权。

使用创建整个java文件。首先创建AST,然后将其写入java文件。这可能看起来是一项繁重的工作,但却是最好的。你将拥有完全的控制权