如何在eclipse插件开发中以编程方式创建一个实现单独接口的java类
朋友们 现在我们正在开发一个eclipse插件,它包含一个用于生成服务接口的操作及其impl存根 现在接口已经生成,我想使用EclipseJDT创建一个java类来实现单独的接口,但不知道如何实现 我们掌握的信息: 接口名、impl类名、packagename和包含它们的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
提前感谢您的帮助。快速浏览一下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文件。这可能看起来是一项繁重的工作,但却是最好的。你将拥有完全的控制权