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

Intellij将私有字段及其访问器方法移动/重构到不同的类

许安邦
2023-03-14

在我的Java项目中,我有一个Java响应对象,它有几个私有字段及其getter和setter。

public class Response {
        String resp1Id;
        String resp1Message;
        String resp2Id;
        String resp2Message;
        //getters & setters
}

我想将成员分组到他们自己的类中,并在我的响应对象中使用Intellij重构如下所示。响应对象在几个地方被使用,我无法手动重构它。我试图使用intellj重构/提取类来实现它,但无法按照我想要的方式进行。如果我使用提取委托,它会以我不想要的方式出现。感谢任何帮助。

public class Response {
        Resp1 resp1;
        Resp2 resp2Id;
        //getters & setters
}
public class Resp1 {
        String resp1Id;
        String resp1Message;
        //getters & setters
}
public class Resp2 {
        String resp2Id;
        String resp2Message;
        //getters & setters
}

共有1个答案

乐正乐湛
2023-03-14

我通过以下步骤实现了它。Intellij中没有可用的单步重构工具。[从IntelliJ可以将属性(get/setters)重构为字段吗?

1)在Response.java类中公开字段。

public String resp1Id;

2) 重构访问器方法(两个getter

response.resp1Id = "abcdef";
String id = response.resp1Id;

3)提取字段以委托类将使用字段创建新类。(此步骤后的示例代码)

public String resp1Id;

4) 重构-将字段封装在新类中,使其成为私有字段,并创建访问器方法。(此步骤后的示例代码)

response.getResp1().setResp1Id("ram");
String kumar = response.getResp1().getResp1Id();
 类似资料:
  • 问题内容: 众所周知,私有字段不会在类之间继承。令我着迷的是它如何用于内部静态类。考虑以下代码: 您能否解释一下如何访问其他内部类的私有字段?如果合法,为什么只能通过“ super.XXX”构造实现? 问题答案: 内部类是Java的较晚入门。添加它们时,它们仅作为编译器扩展添加,对JVM不变。 语言规范指出,内部类被允许访问在其内声明的类的私有成员。包括其他内部类。 为了使其工作,编译器会生成桥接

  • 问题内容: 有没有一种方法可以包含超级的私有字段?我尝试添加,但是没有用。 请看下面的代码 Employee.java 管理器 输出量 那是我能做的最好的,连接+一组字符串,这肯定是一团糟,还有其他方法,即使语言规范不允许它确实有蚀的能力, 注意 :使用 eclipse 生成 toString 方法,通过任何方式,我可以告诉eclipse也包括超类字段, 换句话说,我可以取代这个凌乱的代码 通过让

  • 我正在尝试获取对象的私有字段的名称。当我对包的公共字段使用相同的切点时,它正好工作。我的方面设置为特权。我想要更新类对象的字段。切入点: 建议: 我在我的切入点异常中得到这一行的异常:

  • 问题内容: 在大学里学习时,我不得不做一些难看的Java基础知识,例如不使用封装就可以工作,同一类中的主要方法等。(我不想在Java样式指南上展开讨论,我只是想澄清一下,我不会在大学以外写这样的东西) 我偶然发现了一种我无法向自己解释的行为: 为什么这段代码可以编译并正确运行?我怎么可能访问私有字段?由于主类位于同一类中,因此行为异常? 问题答案: 由于静态方法是类的成员,因此可以访问中的任何私有

  • 问题内容: 我在一个包含私有字段的包中有一个结构: 另一个软件包(例如,白盒测试软件包)需要访问它们: 是否有一种方法可以声明是某种“朋友”软件包,或者可以通过其他任何方式访问的私有成员,但仍然对所有其他软件包保持私有(也许在其中)? 问题答案: 有 是 一种方法来 读取 使用反映不导出成员 但是,尝试使用y.Set或通过其他方式设置反射字段将导致代码恐慌,您试图在软件包外部设置未导出的字段。 简

  • 问题内容: 我有一个类,该类具有一个命名的字段(它与我的类具有相同的类型并具有修饰符): 在该类中,我定义了一个名为的方法,该方法具有一个类型为type的参数。我想知道为什么我可以直接访问实例字段?我的意思是该字段是,不是通过实例受害者无法访问的吗? 问题答案: 隐私不是针对每个实例的,而是针对每个班级的。 该类可以访问所有实例的私有字段。 例如,该方法可以将o(如果适用)转换为相同类型,并将其私