2009-10-23 4 views
7

plantilla predeterminada de Eclipse para nuevos tipos (Ventana> Preferencias> estilo de código> plantillas de código> Nueva Archivos de Java) es el siguiente:En Eclipse, ¿cómo cambio los modificadores predeterminados en la plantilla de clase/tipo?

 
${filecomment} 
${package_declaration} 

${typecomment} 
${type_declaration} 

Creación de una nueva clase, que se verá algo como esto:

package pkg; 

import blah.blah; 

public class FileName { 
    // Class is accessible to everyone, and can be inherited 
} 

Ahora, soy ferviente en mi creencia de que el acceso debe ser tan limitada como sea posible, y la herencia debería prohibirse menos que explícitamente permitido, así que me gustaría cambiar el ${type_declaration} a declarar todas las clases como final en lugar de public:

package pkg; 

import blah.blah; 

final class FileName { 
    // Class is only accessible in package, and can't be inherited 
} 

Parece más fácil decirlo que hacerlo. Lo único que encontré Google es un 2004 question on Eclipse's mailing list que no fue respondido.

Entonces, la pregunta en resumen: ¿Cómo puedo cambiar los modificadores de clase/tipo predeterminados en Eclipse?

Estoy usando Eclipse Galileo (3.5) si eso es importante.

Respuesta

1

Parece que no es posible. El ${type_declaration} es interno.

Lo que puede hacer es hacer clic cada vez que la casilla de verificación final en el "Nuevo tipo de Java" -Dialog. Pero eso no es algo que quieras.

+0

Tienes razón. No es algo que quiero hacer :) – gustafc

0

Simplemente marque el modificador de acceso apropiado al crear la nueva clase con el Asistente de Nueva Clase.

New Java Class Wizard

+0

Eso es lo que hago hoy. La cuestión es que no recuerda mi elección, así que me olvido de hacerlo de vez en cuando. – gustafc

+1

@gustafc Puedes dejar que Checkstyle te avise si lo olvidas. – starblue

+0

@starblue, ese es un buen consejo. Gracias. – gustafc

0

Tal vez esto le ayudará?

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

Eclipse custom variable for java code templates

+0

En realidad, no parece ser que el eclipse recoja las plantillas. El '$ {type_declaration}' no está allí. Estoy empezando a sospechar que se genera en lugar de declararse. – gustafc

1

bien, yo creo que no hay ninguna respuesta fresco, así que lo que sobre eso "piratear"?

${filecomment} 
${package_declaration} 

${typecomment} 
import invalid;/* ${type_declaration} */ 

final class ${type_name} { } 

Si ahora golpeó control + Shift +O para organizar las importaciones, la antigua declaración de tipo desaparece. También puede agregar organizar importaciones para guardar acciones para automatizar.

Sé que es malo, pero hace lo que quiere.

+0

Bueno ... pensamiento interesante. Lamentablemente, declara todo como 'clase final', incluidas interfaces, enumeraciones, etc., y omite las superclases/interfaces que declaro en el asistente. También tengo que incluir el '$ {type_declaration}' en un comentario ya que no puede guardar la plantilla sin él. – gustafc

0

Aquí está mi solución:

Editar la plantilla:

${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"; 
    } 

} 

comentario la $ {} type_declaration porque es requerido. Tiene un comentario para eliminar, pero se cumple el requisito. Lo siento si este es un hilo de 2 años, pero para mí sigue siendo relevante.

+0

Missed codevour's answer. Es básicamente lo mismo. –

Cuestiones relacionadas