代码之家  ›  专栏  ›  技术社区  ›  gustafc

在Eclipse中,如何更改类/类型模板中的默认修饰符?

  •  7
  • gustafc  · 技术社区  · 15 年前

    Eclipse新类型的默认模板(Window & Gt;Popy≫代码风格& GT;代码模板&新的Java文件)如下:

    ${filecomment}
    ${package_declaration}
    
    ${typecomment}
    ${type_declaration}
    

    创建一个新类时,它将如下所示:

    package pkg;
    
    import blah.blah;
    
    public class FileName {
        // Class is accessible to everyone, and can be inherited 
    }
    

    现在,我强烈地相信应该尽可能地限制访问,并且除非明确允许,否则应该禁止继承,所以我想更改 ${type_declaration} 将所有类声明为 final 而不是 public :

    package pkg;
    
    import blah.blah;
    
    final class FileName {
        // Class is only accessible in package, and can't be inherited
    }
    

    说起来容易做起来难。我唯一能找到的就是谷歌 2004 question on Eclipse's mailing list 没有人回答。

    所以,简而言之,问题是: 如何更改Eclipse中的默认类/类型修饰符?

    我正在使用EclipseGalileo(3.5),如果这很重要的话。

    5 回复  |  直到 11 年前
        1
  •  2
  •   michael.kebe    15 年前

    看起来是不可能的。这个 ${type_declaration} 是内在的东西。

    你可以做的是每次点击“新Java类”对话框中的最后一个复选框。但这不是你想要的。

        2
  •  1
  •   jitter    15 年前

    使用“新建类向导”创建新类时,只需检查相应的访问修饰符。

    New Java Class Wizard

        3
  •  1
  •   Christopher Klewes    15 年前

    好吧,我觉得没有什么好答案,那“黑客”呢?

    ${filecomment}
    ${package_declaration}
    
    ${typecomment}
    import invalid;/* ${type_declaration} */
    
    final class ${type_name} { }
    

    如果你现在击中 控制 + 轮班 + o 为了组织导入,旧类型声明将消失。您还可以添加Organize导入以保存要自动执行的操作。

    我知道这很糟糕,但它能满足你的需要。

        4
  •  0
  •   Community Ian Goodfellow    7 年前

    也许这对你有帮助?

      eclipse\plugins\org.eclipse.jdt.ui_*.jar\templates\
    

    Eclipse custom variable for java code templates

        5
  •  0
  •   John Doe    11 年前

    这是我的解决方法:

    编辑模板:

    ${filecomment}
    ${package_declaration}
    
    ${typecomment}   
    final class ${type_name} {
    
        /* ${type_declaration} //delete */
    
        /** 
         * @see {@link Object#toString()}
         * @return String representation of this instance. 
         */
        public String toString() {
            return "some impl";
        }
    
    }
    

    注释掉$类型声明,因为它是必需的。您有要删除的注释,但已达到要求。抱歉,如果这是一个2年前的线索,但对我来说,它仍然是相关的。