我想重构我的代码,因为它包含冗余的类声明。
我有一个 ContainerClass1 类型的类。假设类类型仅包含名为“content”的 int 变量的字段。
ContainerFiller1 类型的另一个类包含一个方法,该方法将 ContainerClass1 的实例作为参数并将字段设置为特定值。 ContainerFiller1 看起来像这样:
public class ContainerFiller1 {
public void fill( ContainerClass object_A ) {
object_A.content = 99;
}
}
所以我使用点符号来声明在哪里可以找到该字段(在本例中是在 object_A 中)。
我还有另外八个对象作为类 ContainerClass (ContainerClass object_B, ContainerClass object_C, ContainerClass object_D, etc.)
的实例.
这是我的问题:object_A.content = 99
是硬连线的,因此在点表示法中,我无法将对象名称作为变量来调整到该字段的路径。作为解决方法,我声明了九个单独的 ContainerFiller-Classes ( ContainerFiller1, …, ContainerFiller9)
每个人都有不同的领域设置者。例如 ContainerFiller2
包含一个硬连线 setter object_B.content = 99
.
我想摆脱多余的类并创建一个 ContainerFiller
类型的通用类从他们当中。有没有办法以某种方式更改字段 setter 概念,我可以引用 fill(ContainerClass anyObject)
的参数列表中的对象名称并动态调整字段 setter ?也欢迎对点表示法的替代方案提出建议。
提前致谢
雷克斯
最佳答案
您可以在构造函数中使用参数:
public class ContainerFiller {
private amount;
public ContainerFiller(int amount) {
this.amount = amount
}
public void fill( ContainerClass container ) {
container.content = this.amount;
}
}
然后像这样使用它:
ContinerFiller fillerA = new ContainerFiller(99)
fillerA.fill(someContainer)
关于java - 避免硬连线现场访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45284121/