• 粘贴1:

当代码写到一定程度之后,就会发现很多代码都被重复地敲了N多遍,甚至毫不夸张地说:闭着眼睛都能敲出来。大量地敲这些重复地代码,除了锻炼敲键盘的速度,基本上没有其他益处,但是长期下来会浪费很多时间,降低了软件开发的效率。例如:为了在程序执行过程中输出logger信息,需要在每个class中都添加这么一段代码:

  1. import org.slf4j.Logger;
  2. import org.slf4j.LoggerFactory;
  3. public class XXXClass {
  4. /**
  5. * Logging mechanism.
  6. */
  7. private static Logger logger = LoggerFactory.getLogger(XXXClass.class);
  8. }

这段代码在不同class文件中唯一不同的就是class的名称:XXXClass。一般的人可能会一个字母一个字母地敲一遍;懒一点的人会Ctrl + C和Ctrl + V,然后把XXXClass改一下;聪明人通过几个字母加上一个快捷键就可以搞定。本文就以上面的logger为例,介绍聪明人使用Java Code Template实现的一种更方便快捷的方式。

1. Template设置

Eclipse工具栏上选择Window -> Preferences -> Java -> Editor -> Templates,进入如下界面:

列表中是Eclipse自带的Code Template,最后一栏是“on”的表示有效,没有的表示无效。如果要使自带的Code Template生效,可以选择需要的Code Template,点击“Edit...”,在打开的Edit Template对话框中,选择“Automatically insert”复选框,点击“OK”保存设置就行了。使用这些有效的自带Code Template的方法,与后面演示的logger的使用方法一样。

点击“New...”可以创建一个新的模板,Template的详细设置如下:

在需要声明logger的地方,输入模板名称logger,然后按Ctrl + Space快捷键,显示模板logger的提示框如下图所示:

选择需要添加的模板logger,则模板中的代码会被自动添加,包括import的packages,注释以及logger声明。

2. Ctrl + Space失效

在有些情况下,按了Ctrl + Space快捷键之后,没有反应,也不显示提示框。可能存在两种情况:

  • Case 1:没有设置Content Assist快捷键

Eclipse工具栏上选择Window -> Preferences -> General -> Keys,进入如下快捷键设置界面:

在编辑框中输入“content assist”,就会自动搜索到“Content Assist”命令,选择它之后,在下面的“Binding”编辑框中输入“Ctrl+Space”,或者直接按Ctrl + Space快捷键,然后点击“OK”。

  • Case 2:Ctrl + Space快捷键冲突

如果Ctrl + Space已经设置为Content Assist快捷键,但是还是没有效果,可能的原因是Eclipse的Ctrl + Space快捷键与Windows系统中输入法切换的快捷键冲突。将输入法切换的快捷键修改成其他,如下图所示:

3. Ctrl + Space提示框中没有模板

如果按了Ctrl + Space之后,提示框中却没有显示模板logger,如下图所示:

这是因为内容提示(Content Assist)中没有选择模板提示(Template Proposals)。Eclipse工具栏上选择Window -> Preferences -> Java -> Editor -> Content Assist -> Advanced,可以进行如下设置:

选择两个方框中“Template Proposals”前面的复选框。如果下面方框中的“Template Proposals”不是第一个,可以选择它,然后点击“Up”按钮直到它处于第一的位置,这样每次提示框中第一个就是需要的Code Template。

  • 粘贴2:

某天在调试代码的时候,虽然是android的project还是习惯的输入syso,然后在ALT+/一下。旁边的同事就问了一下,这个log打印输出的tag是什么。接着又问了为什么syso能够智能联想出这个。第一个问题很好回答,不过对于第二个问题还真答不上来。大学里面第一次见某个学长使用这个技能之后,就默默的记住了,也没有多想是什么回事。这两天留意了一下,原来是类似java代码模版的一个东东。在一想为什么不自己定义android的联想词呢。。。
        步骤一:打开preference,搜索editor,选择java的editor,这个时候找到 sysout就可以看到它的定义了


        步骤二:这次我们自定义android的log打印,选择新建,输入如图所示的字符串,注意中间那段类似正则表达式的是模仿sysout的,想来应该是光标移动到这里的意思


        步骤三:验证一下,输入loe,按住alt+/,自动生成了如下所示的代码,并且光标还在那里


        很快捷有木有,再也不用调试时候输出一句log弄半天了,而且还带有调用栈的功能哦。

  • 我的实践:

如下代码,

${:import(java.util.Scanner)}可以在开头导入包
"${word_selection}${}"可以定位光标。
 
${:import(java.util.Scanner)}
Scanner scan=new Scanner(System.in);//generate input flu
System.out.print("${word_selection}${}");//input reminder
=scan.nextInt();//assignment
scan.close();

也可以不加开头一行,直接在开头处按Ctrl+Shift+O 就可以导入缺失的包。

java插入代码块的更多相关文章

  1. Java面向对象-代码块

    Java面向对象-代码块 代码块主要就是通过{}花括号 括起来的代码: 主要分为 普通代码块 构造块 静态代码块三类.后面学到线程还有一个同步代码块,到时候再说: 普通代码块:仅仅是花括号括起来的代码 ...

  2. java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

    java静态代码块/静态属性.构造块.构造方法执行.main方法.普通代码块的顺序 这也是在笔试中的一个重要的考点,就有一个输出语句让你写出输出的结果. 理论知识: 静态代码块是:属于类的,在类加载时 ...

  3. CSDN Markdown编辑器插入代码块时不能代码高亮

    当我们点击插入代码块按钮,会提示我们在这里插入代码片,我们在三个单引号对之间输入代码后发现并没有实现代码块高亮, 如下图所示: <!DOCTYPE html> <html lang= ...

  4. java 静态代码块和spring @value等注解注入顺序

      java 静态代码块和spring @value等注解注入顺序 问题所在 先上代码 java方法 @Value("${mf.cashost}") public static S ...

  5. java构造代码块详解

    一.简介 首先说一下,Java中有哪些代码块. 普通代码块 就是在方法后面使用"{}"括起来的代码片段,不能单独执行,必须调下其方法名才可以执行. 静态代码块 在类中使用stati ...

  6. [Java基础]代码块及java反编译

    块的作用域:   块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...

  7. java基础--java静态代码块和静态方法的区别、static用法

    转载自: http://blog.sina.com.cn/s/blog_afddb8ff0101aqs9.html 静态代码块:有些代码必须在项目启动的时候就执行,这种代码是主动执行的(当类被载入时, ...

  8. java静态代码块、初始化块和构造方法的执行顺序

    分析:当执行new Child()时,它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容,当父类的静态代码块里面的内容执行完毕之后,接着去执行子类(自己这个类)里面的静 ...

  9. java静态代码块、普通代码

    参考文章:http://www.cnblogs.com/qinpengming/p/5227227.html Java中经常有一些静态块,这是用来在生成类之前进行的初始化,无论java还C++语言中的 ...

随机推荐

  1. vue表单验证不通过,依然能执行点击事件里面的代码?

    遇到的问题:表单提交的时候,写了rules,明明验证不通过依然执行了点击事件里面的代码. 这个验证有什么用? 后来 我看elementUI组件才发现,我漏写了几行代码. methods里面这样写 完美 ...

  2. 【转帖】分布式事务之解决方案(XA和2PC)

    分布式事务之解决方案(XA和2PC) https://zhuanlan.zhihu.com/p/93459200 ​ 博彦信息技术有限公司 java工程师 3. 分布式事务解决方案之2PC(两阶段提交 ...

  3. Linux下用source insight的另一种方式--Samba

    花了一些时间想找一个在Linux下的类似source insight的东东,网上有人推荐的source navigator,kscope之类,就那么几种颜色(也许没深入设置),也能叫语法高亮?至于其他 ...

  4. spring的15个经典面试题

    总结Spring框架的15个经典面试题. 什么是Spring框架? Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性. 我们一般说的Spring框架就是Spring Fram ...

  5. MonkeyDev安装--逆向开发

    MonkeyDev是原有iOS OpenDev的升级,非越狱插件的开发集成神器! 可以使用Xcode开发CaptainHook Tweak.Logos Tweak 和 Command-line Too ...

  6. .net mvc 几种跨域获取数据方案

    方案一: 在web.conflg配置文件system.webServer节点中添加以下节点配置 <!--允许 "所有网站" 跨域访问写法:--><httpProt ...

  7. PIE SDK加载WMS服务数据

    1.   功能简介 WMS服务,WMS是OGC标准中比较简单也是比较重要的标准之一.它全称是“Web Map Service”(网络地图服务):利用具有地理空间位置信息的数据制作地图.其中将地图定义为 ...

  8. 线程状态---Day24

    线程状态概述: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中, 有几种状态呢?在API中 java.lang.Thread.State 这个枚举中 ...

  9. 【转载】C#中ArrayList使用RemoveRange移除一整段数据

    在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,如果需要移除ArrayList集合中指定索引位置开始的一整段元素对象,则可以使用ArrayList集合中的RemoveRange方法 ...

  10. Django模板系统:Template

    一.模板常用语法 1.1 变量 符号:{{ }} 表示变量,在模板渲染的时候替换成值 使用方式:{{ 变量名 }}:变量名由字母数字和下划线组成 点(.)在模板语言中有特殊的含义,用来获取对象的相应属 ...