在 Scala 中提取特征
通过 提取特征 重构,您可以将 Scala 类、对象或特征中的选定成员提取到一个新的特征中。 IntelliJ IDEA 支持 def、 val 和 var 类型成员。
提取特征
在编辑器中,选择您想要重构的代码成员。
在主菜单中,前往 。
或者,右键点击编辑器中的任意位置以打开上下文菜单并选择 。
在打开的对话框中,输入一个新的 trait 名称并选择您想要提取的成员。
如果您需要选择 要提取的成员 部分中列出的所有成员,请先按 Ctrl+A 然后按 Space。
点击

重构。
示例
让我们创建一个类 Calculator ,并提取其中一个方法 (mul) 到一个 trait 中。
class Calculator {
def add(a: Int, b: Int): Int = a + b
def mul(a: Int, b: Int): Int = a match {
case 0 =>0
case _ => add(b, mul(a-1, b))
}
}
trait Multiplier {
this: Calculator =>
def mul(a: Int, b: Int): Int = a match {
case 0 => 0
case _ => add(b, mul(a - 1, b))
}
}
class Calculator extends Multiplier {
def add(a: Int, b: Int): Int = a + b
}
IntelliJ IDEA 创建了一个新的特征 Multiplier ,其中包含 mul 方法及其定义体。 该类 Calculator 扩展了特质 Multiplier。
提取特征对话框参考
条目 | 描述 |
|---|---|
从中提取特征 | 此字段包含您试图从中提取成员的类、对象或特征的名称。 |
特征名称 | 请在此字段中输入新特征的名称。 |
用于 trait 的包 | 使用此字段为新创建的 trait 添加一个包。 我们建议您使用与您正从中提取的原始类、对象或特征相同的包。 |
要提取的成员 | 请使用此区域选择您要提取的成员。 当选中 提取抽象复选框时,新特性将仅包含声明而没有定义体。 例如,在这种情况下不包含主体的抽象方法将在原始类中被重写,并且定义将保留在那里。 当没有选中此复选框时,该方法将与其定义一起移至新的 trait,如 example中所示。 |
最后修改日期: 2025年 4月 24日