当前位置: 首页 > 知识库问答 >
问题:

Intellij-使用委托类重构getter和setter

程沛
2023-03-14

这是我想做的。假设我有这个代码:

public class Foo {

  private Bar bar = new Bar();

  public void doWork() {
    bar.setA(5);
    bar.setB(10);
  }
}

public class Bar {
  private int a;
  private int b;

  public void setA(int a) { this.a = a; }
  public void setB(int b) { this.b = b; }

  ...
}

我想将Bar中的成员a和b提取到一个单独的Container类中,并以这段代码结束。请注意,Foo不再在bar上调用setA,而是请求容器并在其上调用setter:

public class Foo {

  private Bar bar = new Bar();

  public void doWork() {
    bar.getContainer.setA(5);
    bar.getContainer.setB(10);
  }
}


public class Bar {
  private Container container;

  public Container getContainer() { return container; }

  ...
}

public class Container {
  private int a;
  private int b;

  public void setA(int a) { this.a = a; }
  public void setB(int b) { this.b = b; }

  ...
}

在IntelliJ中有没有办法做到这一点?

我可以尝试使用重构-

public class Bar {
  private Container container;

  public void setA(int a) { container.setA(a); }
  public void setB(int b) { container.setB(b); }

  ...
}

这不是我想要的。

共有1个答案

锺星洲
2023-03-14

选择类栏内的一段代码...

private int a;
private int b;

public void setA(int a) { this.a = a; }
public void setB(int b) { this.b = b; }

在主菜单或选择的上下文菜单中,选择重构|提取|方法对象。您还可以选择创建内部类或匿名类。希望这有所帮助。

 类似资料:
  • ILRuntime中使用委托 如果只在热更新的DLL项目中使用的委托,是不需要任何额外操作的,就跟在通常的C#里那样使用即可 如果你需要将委托实例传给ILRuntime外部使用,那则根据情况,你需要额外添加适配器或者转换器。 需要注意的是,一些编译器功能也会生成将委托传出给外部使用的代码,例如: Linq当中where xxxx == xxx,会需要将xxx == xxx这个作为lambda表达式

  • 问题内容: 有人可以解释何时以及何时不使用Swift中的委托指针进行“弱”分配,为什么? 我的理解是,如果您使用的协议未定义为类,则无法,也不想将您的委托指针分配给弱。 但是,当您的协议定义为类类型协议时,您是否要将委托设置为弱指针? 我对么?在Apple的快速指南中,类协议示例没有使用弱分配,但是在我的测试中,如果没有弱引用我的委托人,我会看到强参考周期。 问题答案: 通常,使类协议(如用关键字

  • 本文向大家介绍C#中的委托使用,包括了C#中的委托使用的使用技巧和注意事项,需要的朋友参考一下 从今天开始写关于C#的系列文章,本篇文章主要讲解C#中的委托使用。 委托其实就是一种数据类型,和int,string是一样的概念。 如果要把一个字符串赋值给一个变量,用string声明一个变量即可。如果要把一个方法赋值给一个变量,那么用什么关键字呢?当然就是用委托了,所以用委托声明的变量就可以接受一个方

  • 在C++98中,如果你想让两个构造函数完成相似的事情,可以写两个大段代码相同的构造函数,或者是另外定义一个init()函数,让两个构造函数都调用这个init()函数。例如: class X { int a; // 实现一个初始化函数 validate(int x) { if (0<x && x<=max) a=x; else throw bad_X(x);

  • 主要内容:类委托,属性委托,标准委托,可观察属性 Observable,把属性储存在映射中,Not Null,局部委托属性,属性委托要求,翻译规则,提供委托委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托。 类委托 类的委托即一个类中定义的方法实际是调用另一个类的对象的方法来实现的。 以下实例中派生类 Derived 继承了接口

  • 主要内容:声明委托,实例化委托,多播委托(合并委托)C# 中的委托(Delegate)类似于 C 或 C++ 中的函数指针,是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。委托特别适用于实现事件和回调方法,所有的委托都派生自 System.Delegate 类。在实例化委托时,可以将委托的实例与具有相同返回值类型的方法相关联,这样就可以通过委托来调用方法。另外,使用委托还可以将方法作为参数传递给其他方法, 委托具有以下特点: 委托类似