codecamp

IntelliJ IDEA使方法静态

IntelliJ IDEA 的使方法静态重构将实例方法转换为静态方法,并自动更正方法的所有调用、实现和重写。

note:此重构也可从 UML 类图中获得。

使方法静态重构示例

示例-1

重构前:

class ConnectionPool {
    public int i;
    public int j;
    public void getConnection() {
        ...
    }
}

重构后:

class ConnectionPool {
    public int i;
    public int j;
    public static void getConnection(ConnectionPool connectionPool) {
        ...
    }
}

示例-2

重构前:

class ConnectionPool {
    public int i;
    public int j;
    public void getConnection() {
        ...
    }
}

重构后:

class ConnectionPool {
    public int i;
    public int j;
    public static void getConnection(int i, int j) {
        ...
    }
}

执行重构

  1. 在 "结构" 视图中选择要重构的方法,或者右键单击编辑器中的方法名称。在主菜单或选择的上下文菜单上,选择:重构|使静态(Refactor | Make Static)。将打开 "使方法静态" 对话框。
  2. 如果方法引用了任何包含的类字段,请执行以下操作之一:若要将整个引用对象作为参数传递给该方法,请选中 "将对象添加为带有名称的参数" 复选框并输入参数的名称。要将引用的字段/变量作为参数传递给方法,请选择 "为字段添加参数" 复选框并在列表中选择相应的字段。您也可以使用 "上移" 和 "下移" 按钮更改参数的顺序。
  3. 如果该方法不包含对字段或实例变量的任何引用,则应仅指定是否要用类引用替换实例限定符。
  4. 要预览结果,请单击 "查找" 工具窗口中的 "预览" 并检查重构的重用。如果没有问题,应用更改。

对调用层次结构中的方法进行静态重构

在调用层次结构中,如果方法调用者不包含对实例成员的任何其他引用,则 IntelliJ IDEA 建议您使这些调用者成为静态的。

示例

操作前:

class CallHierarchySample {
    private void foo(int i) { bar(i);}
    private void bar(int i) { baz(i);}
    private void baz(int i) { }
}

操作后:

class CallHierarchySample {
    private static void foo(int i) { bar(i);}
    private static void bar(int i) { baz(i);}
    private static void baz(int i) { }
}

在上述的例子中,重构在 baz(int i) 执行。所有的调用者方法也被选为静态的。

执行重构时,将显示用于传播静态对话框的选择方法。通过此对话框您可以选择要使其成为静态的调用方方法。

IntelliJ IDEA方法静态
IntelliJ IDEA使类静态
IntelliJ IDEA迁移重构
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

IntelliJ IDEA的一般准则

什么是IntelliJ IDEA项目

使用IntelliJ IDEA的意图行为

IntelliJ IDEA使用运行/调试配置

特定于VCS的程序

IntelliJ IDEA语言和特定框架指南

IntelliJ IDEA的数据库和SQL功能

IntelliJ IDEA使用之JavaServer Faces(JSF)

IntelliJ IDEA:分析PHP应用程序的性能

IntelliJ IDEA:调试PHP应用程序

IntelliJ IDEA:适用于PHP的Google App Engine

IntelliJ IDEA更多内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }