Plantilla Intellij Live

81

¿Hay alguna forma de usar un valor de token predeterminado en Intellij? Live templates ? Por ejemplo, tengo la siguiente plantilla en vivo que declara una variable privada que me gustaría crear casi para cada clase:

private static final Logger logger = Logger.getLogger($CLASS$.class)

Parece innecesario escribir $CLASS$cada vez que se usa esta plantilla en vivo, porque puede derivarse de la clase en el alcance o el nombre de archivo. Me preguntaba si es posible usar tokens definidos por el entorno en plantillas en vivo como valores predeterminados.

Leonid
fuente

Respuestas:

114

Verifique algunas otras plantillas que ya usan el nombre de la clase actual:

ingrese la descripción de la imagen aquí

CrazyCoder
fuente
3
Gracias, ¿dónde están definidas todas las expresiones disponibles?
Leonid
Todas las expresiones se enumeran aquí: jetbrains.com/help/idea/template-variables.html
Brad
54

log4j:

private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger($CLASS_NAME$.class);

slf4j:

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger($CLASS_NAME$.class);

Asegúrese de establecer el contexto aplicable a Java y de acortar los nombres de FQ y omitir si están definidos están habilitados.

Nowaker
fuente
3
Me gusta la adición que menciona este artículo para configurar una expresión para completar la variable con un valor predeterminado razonable. coderwall.com/p/hzmhbw
Snekse
@Snekse Esa es una buena adición. Le invitamos a mejorar mi respuesta editándola.
Nowaker
Esta respuesta en realidad no responde a la pregunta del interrogador: para autocompletar la $CLASS_NAME$variable con el nombre de la clase, debe establecer la "Expresión" asociada a la $CLASS_NAME$variable className(). Vea la respuesta de CrazyCoder para una captura de pantalla.
Adil Hussain
3

log4j 2:

private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger($CLASS_NAME$.class);
bruno.do.amaral
fuente
Esta respuesta en realidad no responde a la pregunta del interrogador: para autocompletar la $CLASS_NAME$variable con el nombre de la clase, debe establecer la "Expresión" asociada a la $CLASS_NAME$variable className(). Vea la respuesta de CrazyCoder para una captura de pantalla.
Adil Hussain