Java Eclipse项目的模板

5

在Eclipse中,是否有可能使(Java)文件的创建更加简单/快捷。

我知道有“新建类向导”,但对于我的“特殊”需求来说,它太慢了...

我有一个特定的项目,经常需要创建新的类,但这些类的结构是相同的。假设我想创建类A,那么我希望文件A.java被创建为

class A {
    public static void main(String[] args) {
    }
    static int solve() {
    }
}

最完美的情况是也为这个类创建一个 ATest.java,例如:

class ATest {
    @Test
    int test1() {
        Assert.assertEquals(0, A.solve());
    }
}

或者在Eclipse中有这样的插件吗?

不确定是否重复,但是这个问题看起来非常相关。 - Paul Richter
谢谢,我需要检查一下... - Betlista
3个回答

2

是的,您可以尝试使用FastCode插件,它允许您根据需要创建新的模板。由于FastCode插件支持自定义模板,以下是如何同时创建上述类和测试类的示例:

<template name="CREATE_NEW_CLASS">
        <description>Used to Create class in the specified package.</description>
        <allowed-file-names>*.*</allowed-file-names>
        <first-template-item>package</first-template-item>
        <second-template-item>none</second-template-item>
        <additional-parameters>className</additional-parameters>
        <template-body>
            <![CDATA[
            <fc:class type="class" name="${className}" package="${package.name}" project="${package.javaProject}">
            public class ${className} {
            public static void main(String[] args) {
                }
                static int solve() {
                }
            }
            </fc:class>
            <fc:class type="test" name="${className}Test" package="${package.name}" project="${package.javaProject}">
            public class ${className}Test {
            @Test
                int test1(){
                    Assert.assertEquals(0, ${className}.solve());
                }
            }
            </fc:class>
        ]]>
    </template-body>
</template>

添加模板后,您需要在模板首选页面使用导入选项进行导入,如文档中所述。


1
谢谢,我觉得FastCode插件可以处理很多我在Eclipse中缺少的有用功能。也感谢您提供了更详细的配置插件信息,我今天稍后会检查一下。 - Betlista
1
我无法创建单个模板 - NPE: java.lang.NullPointerException 在org.fastcode.util.VelocityUtil.validateVariablesAndMethods(VelocityUtil.java:402)处 在org.fastcode.preferences.OpenEditTemplateDialog.okPressed(OpenEditTemplateDialog.java:583)处 - Betlista
1
Betlista,从你的快照来看,我感觉这只是一个警告信息。仍然会进一步执行导入/导出模板。但如果插件有任何问题,请使用网站上的联系表格http://3pintech.com/contacts.htm联系,并且我相信他们将会解决你的问题。 - LeenaLatesh
2
要使用fastcode插件,您需要在工作区中至少有一个Java项目。先创建一个项目,然后尝试创建模板。希望这能帮到您。 - LeenaLatesh
2
一旦您通过首选项页面创建了模板,请导出模板。然后,您可以使用快捷键ctrl+alt+shift T在任何编辑器中调用模板,会出现一个对话框,在其中选择下拉列表中创建的模板,然后继续进行。您可以查看演示链接以更清楚地了解如何使用模板(http://3pintech.com/products/fast-code/instance-of-class-from-fields.htm)或http://3pintech.com/products/fast-code/templates.htm#instanceclass - LeenaLatesh
显示剩余9条评论

1

是的,这个设置相对简单。打开项目属性并导航到 Java 代码风格 > 代码模板 部分。一旦到达那里,勾选启用项目特定设置的框。你想要生成的模板位于树的代码部分下;你需要的是类主体。它可能为空,但是点击编辑...按钮进行修改。

enter image description here

无论您在编辑对话框中输入什么,当使用新类向导时,它都将插入到类的括号之间。
我不知道是否有自动创建另一个类(您的情况下为Test)的方法。但是Eclipse有一个JUnit向导,使得这样做非常容易。只需右键单击类,然后选择“新建”>“其他...”,然后在列表中找到“JUnit测试用例”。该向导将指导您创建测试类,包括选择要测试的方法。
注意:这些说明仅为所选项目或项目设置模板。您还可以为整个工作区首选项设置相同的内容,但是这样做没有提供共享配置的方式,以便将同一项目检出到另一个工作区中使用。我通常建议按每个项目的基础设置这些类型的设置。

0

我不确定你是否需要一个特定于IDE的模板。当我在完成欧拉计划时,我的设置是这样的:

public interface Problem {
    public Object solve();
}

public class MyProblem implements Problem {
    @Override
    public Object solve() {
        // do some stuff
        return result;
    }
}

然后在你的(JUnit?)测试中,你可以使用

Assert.assertEquals(expected, myProblemInstance.solve());

你可以在这里看到我的实现。


如果你使用IDE模板,你将无法使用通用的solve()方法,因为不能保证该类具有该方法。我强烈建议使用接口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接