内联
内联重构允许您对方法、构造函数、参数、超类、匿名类和闭包(适用于 Swift)执行反向重构 提取。
从 Java 14 版本起,您可以内联 pattern variable。 在这种情况下,所有的出现都将被替换为 old-style cast expression。
将文本光标放在您要内联的代码片段处。
按下 Ctrl+Alt+N。 或者,右键点击代码片段,并从 菜单中选择您需要的内联重构。
在 内联 对话框中,指定内联选项。
(可选)选择 预览 以预览更改。
预览并应用更改。
示例
Inline Variable
内联变量重构用其初始化器替换冗余变量的使用。
示例 1
public void method() {
int number = anotherClass.intValue();
int b = a + number;
}
public void method() {
int b = a + anotherClass.intValue();
}
示例 2
public void method() {
AnotherClass.InnerClass aClass = anotherClass.innerClass;
int a = aClass.i;
}
public void method() {
int a = anotherClass.innerClass.i;
}
Inline Method
内联方法会将该方法的主体插入其调用者的主体中。
示例 1
public void method() {
int c=add(a,b);
int d=add(a,c);
}
private int add(int a, int b) {
return a+b;
}
public void method() {
int c= a + b;
int d= a + c;
}
示例 2
public ArrayList method() {
String[] strings = {"a","b","c"};
ArrayList list=add(strings);
return list;
}
private ArrayList add(String[] strings) {
ArrayList list = new ArrayList();
for (int i=0; i< strings.length; i++)
{list.add(strings[i]);}
return list;
}
public ArrayList method() {
String[] strings = {"a","ab","abc"};
ArrayList list1 = new ArrayList();
for (int i=0; i< strings.length; i++)
{list.add(strings[i]);}
ArrayList list = list1;
return list;
}
内联抽象方法
将具有唯一实现的抽象方法执行内联,会用具体实现的代码替代对该方法的调用,并移除该方法的声明及其调用。
public interface AnInterface {
int readValue();
}
class AClass implements AnInterface {
public int readValue() {
return 1;
}
}
class UserClass{
void doSmth(){
AnInterface a = new AClass();
int i = a.readValue();
}
}
public interface AnInterface {
int readValue();
}
class AClass implements AnInterface {
public int readValue() {
return 1;
}
}
class UserClass{
void doSmth(){
AnInterface a = new AClass();
int i =1;
}
}
内联构造函数
内联构造函数允许压缩构造函数链,如果其中一个构造函数是另一个的特例。
public class Class {
public int varInt;
public Class() {
this(0);
}
public Class(int i) {
varInt=i;
}
public void method() {
Class aClass=new Class();
}
}
public class Class {
public int varInt;
public Class(int i) {
varInt=i;
}
public void method() {
Class aClass=new Class(0);
}
}
内联超类
内联父类重构的结果是将父类的方法推送到其被使用的类中,并删除该父类。
public class Bar {
...
int calculations1() { ... }
int calculations2() { ... }
}
class Foo extends Bar {
int someMethod() {
...
if (something > calculations1()) {
...
return calculations2();
}
...
}
}
public class Bar {
...
int calculations1() { ... }
int calculations2() { ... }
}
class Foo extends Bar {
int someMethod() {
...
if (something > calculations1()) {
...
return calculations2();
}
...
}
}
内联到匿名类
内联为匿名类重构允许用其内容替代冗余类。从 Java 8 开始,被内联的匿名类可以自动转换为 Lambda 表达式。 从 Java 8 开始,内联匿名类可以自动转换为 lambda。
import java.util.*;
public class Main {
public class MyComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return 0;
}
}
void sort(List<String> scores) {
scores.sort(new MyComparator());
}
}
import java.util.*;
public class Main {
void sort(List<String> scores) {
scores.sort((s1, s2) -> 0);
}
}
Inline Parameter
内联参数重构允许您将参数的用法替换为方法调用参数的值。
public class HelloWorld {
public static void main(String[] args) {
int score = getScore(5);
System.out.println("Score: " + score);
}
public static int getScore(int base) {
return base * 10;
}
}
public class HelloWorld {
public static void main(String[] args) {
int score = getScore();
System.out.println("Score: " + score);
}
public static int getScore() {
return 5 * 10;
}
}
最后修改日期: 2025年 9月 22日