你知道怎么用Idea抽取方法、创建class吗?
liJ IDEA的快捷键是进行重构的利器,坊间盛传,完全使用IDEA快捷键重构的代码,是不需要写测试用例保护的
本文就分享一个使用IDEA抽取方法及创建新的class的方法
工具/原料
- IntelliJ IDEA
方法/步骤
先来一段需要重构的代码:
package chapter4;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by MyWorld on 2016/3/21.
*/
public class RefactorOperate {
public static void main(String[] args) {
List<String> seasonList = new ArrayList<String>(Arrays.asList("Spring", "Summer", "Autumn", "Winter"));
for (String season : seasonList) {
System.out.println(season);
}
seasonList.add("Spring Rain");
seasonList.add("vernal equinox");
System.out.println("======================");
for (String season : seasonList) {
System.out.println(season);
}
}
}
先把重复的代码中负责打印操作的代码提到一个方法中
操作:
如下截图所示,选中需要提取的代码
同时Ctrl+Alt+m
在弹出的对话框中,填入将要新生成的方法的名字,此处我们取的方法名是print
最后点“确定”
现在马上就可以看到 IDEA的一个方便、强大的功能了
从自动检测出类似代码,并提示出来
"IDEA has detected 1 code fragment in this file that can be replaced with a call to extracted method. would you like to review and replace it "
此处我们选“Yes”
看看抽取方法后,现在代码的情况:
package chapter4;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by MyWorld on 2016/3/21.
*/
public class RefactorOperate {
public static void main(String[] args) {
List<String> seasonList = new ArrayList<String>(Arrays.asList("Spring", "Summer", "Autumn", "Winter"));
print(seasonList);
seasonList.add("Spring Rain");
seasonList.add("vernal equinox");
System.out.println("======================");
print(seasonList);
} private static void print(List<String> seasonList) {
for (String season : seasonList) {
System.out.println(season);
}
}
}
输入“StringUtils utils=new StringUtils();”
IDEA肯定会提示编译不过。肯定不过了,因为Project中根本没有这个class
把鼠标放在报错代码上,同时按“Alt + Enter”
在弹出的菜单中选中“Create Class 'StringUtils'”
然后回车(当然,使用鼠标直接点击也可以)
在弹出的“Create Class StringUtils”对话框中,确认下Destination Package的位置
此处,我们就话在这个package下,直接点“OK”
新Class StringUtils就创建完成了!!
你知道怎么用Idea抽取方法、创建class吗?的更多相关文章
- PHP mkdir 方法 创建 0777 权限的目录问题
php 中使用 mkdir() 方法创建 0777 权限的目录: $path = './Logs/secondCheck/';if(!is_dir($path)){ mkdir($path, 0777 ...
- console.log的一个应用 -----用new方法生成一个img对象和document.createElement方法创建一个img对象的区别
我用两种方法来生成img对象,第一种方法是用new方法,第二种方法是用document.createElement方法. var img1 = new Image(); var img2 = docu ...
- ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集
上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...
- Spring学习--静态工厂方法、实例工厂方法创建 Bean
通过调用静态工厂方法创建 bean: 调用静态工厂方法创建 bean 是将对象创建的过程封装到静态方法中 , 当客户端需要对象时 , 只需要简单地调用静态方法 , 而不需要关心创建对象的细节. 要声明 ...
- 扩展Jquery方法创建LigerUI Grid
///** //*封装jquery get请求ajax //*author:叶明龙 //*time:2012-12-10 //*/ function getAjax(url, para, fn) { ...
- TP框架控制器和对应方法创建
控制器和对应方法创建 控制器是MVC模式中的核心,TP默认有一个控制器: Index控制器里面有一个操作方法:Index 我们在访问http://localhost:8080/Thinkphp ...
- 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组
真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...
- Spring 工厂方法创建Bean 学习(三)
1, 静态工厂方法创建Bean 调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不同关心创建对象的细节. 要声明通过静态方法创建 ...
- 【转载】C#的DataTable使用NewRow方法创建新表格行
在C#的DataTable数据表格操作过程中,DataRow类表示DataTable中的数据行信息,但DataRow没有可以直接实例化的构造方法,在创建DataTable的新行的时候,不可直接使用Da ...
随机推荐
- csu oj 1342: Double
Description 有一个由M个整数组成的序列,每次从中随机取一个数(序列中每个数被选到的概率是相等的)累加,一共取N次,最后结果能被3整除的概率是多少? Input 输入包含多组数据. ...
- BigDecimal 类型数据比较大小
public static void main( String[] args ) { BigDecimal a=new BigDecimal(-1); if(a.compareTo(BigDecima ...
- Python Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)
在windows 平台下,当python使用以下方式安装时,可能出现以下错误: > python setup.py install error: Microsoft Visual C++ 10. ...
- springmvc访问项目默认先访问后台再返回首页
1.spring过滤的url-pattern设置成了/,所以这里随便给个新的后缀 <welcome-file-list> <welcome-file>index.zl</ ...
- 2.两数相加(Add Two Numbers) C++
第一想法是顺着题目的原因,将两链表分别转化为一个数字,再将数字相加,然后把结果转化为字符串,存到答案链表中.但是数据太大会溢出! 所以,要在计算一对数字的过程当中直接存储一个结果,注意结果大于9时进位 ...
- docker容器扫盲
Centos 6.5 安装和使用docker 基于本人一贯的习惯,关于“某某某是什么”这样的问题,请百度吧,会有更专业的人士,会比我说的更详细更深,这里我只给出本人亲历的安装和使用过程. 1.安装 先 ...
- Linux NTP服务配置 for Oracle RAC
安装Oracle 11g RAC时,我们需要配置ntp服务.在使用虚拟机的情况下对于时钟同步方式的配置有很多种方式,可以使用vmware自带的时钟同步功能,也可以直接将本地的一个节点用作时间服务器.本 ...
- PHP如何自定义PHP内置函数
其实对于PHP程序员,有个纯PHP的解决方案.在php.ini里有个配置项 auto_prepend_file,可以设置一个PHP文件作为每次执行前自动加载的文件. 在这个文件里写函数,你就可以当成定 ...
- ActiveMQ 配置jdbc主从
使用 jdbc 方式配置主从模式,持久化消息存放在数据库中. 在同一时刻,只有一个 master broker,master 接受客户端的连接,slave 不接受连接.当 master 因为关机而下线 ...
- EXCEL词典(xllex.dll)文件丢失或损坏解决方法
EXCEL词典(xllex.dll)文件丢失或损坏解决方法 1● 问题 2● 解决 fail 3● 方法2 regsvr32 xllex.dll 4● 方法3 启动server ...