【问题标题】:Java template for a project in EclipseEclipse 中项目的 Java 模板
【发布时间】:2014-08-01 15:41:10
【问题描述】:

是否可以更轻松/更快地在 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 有这样的插件吗?

【问题讨论】:

  • 不确定它是否重复,但this question 看起来非常相关。
  • 谢谢,我得检查一下...

标签: java eclipse


【解决方案1】:

是的,您可以尝试使用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>

添加模板后,您需要使用template preference page 中的导入选项进行导入,如文档中所述。

【讨论】:

  • 谢谢,在我看来,FastCode 插件可以处理很多我在 Eclipse 中错过的有用功能。也谢谢您,您提供了有关如何配置插件的更详细信息,我将在今天晚些时候检查。
  • 我无法创建单个模板 - NPE: java.lang.NullPointerException at org.fastcode.util.VelocityUtil.validateVariablesAndMethods(VelocityUtil.java:402) at org.fastcode.preferences.OpenEditTemplateDialog.okPressed(OpenEditTemplateDialog .java:583)
  • Betlista,看看你的快照,我觉得这只是一个警告信息,但它仍然会继续进行并导出/导入模板。如果插件有任何问题,请使用网站上的联系表格3pintech.com/contacts.htm 联系,我相信他们会纠正您的问题。
  • 要使用 fastcode 插件,您的工作区中至少需要一个 java 项目。拥有一个,然后尝试创建模板。希望对你有帮助。
  • 通过首选项页面创建模板后,请导出模板。然后您可以在任何编辑器中使用快捷键 ctrl+alt+shift T 调用模板,将出现一个对话框,在下拉菜单中选择您创建的模板并继续。您可以查看演示链接以更清楚地了解如何使用模板 (3pintech.com/products/fast-code/…) 或 3pintech.com/products/fast-code/templates.htm#instanceclass
【解决方案2】:

是的,设置起来相对简单。打开 Project Properties 并导航到 Java Code Style > Code Templates 部分。在那里,选中该框以启用项目特定的设置。您想要的生成模板在树的 Code 部分下;你想要类正文。它可能是空的,但单击 Edit... 按钮进行修改。

在使用新建类向导时,您在编辑对话框中输入的任何内容都将插入到类的括号之间。

我不知道如何自动创建另一个类(在您的情况下为 Test )。但是 Eclipse 有一个 JUnit 向导,这使得这样做非常容易。只需右键单击一个类并选择New > Other...,然后在列表中找到Junit Test Case。该向导将指导您创建测试类,包括选择要测试的方法。

注意:这些说明仅为您选择的一个或多个项目设置模板。您还可以为整个工作区首选项设置相同的内容,但这样做无法共享该配置,以便检出到另一个工作区的同一个项目将使用它。我通常建议在每个项目的基础上进行这些设置。

【讨论】:

    【解决方案3】:

    我不确定您是否需要一个特定于 IDE 的模板。当我通过 Project Euler 时,我有这样的设置:

    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());
    

    你可以看到我的实现here


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

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 2012-03-20
      • 1970-01-01
      • 2017-12-25
      • 2011-09-10
      • 1970-01-01
      相关资源
      最近更新 更多