我想重构我的代码,因为它包含冗余的类声明。

我有一个类型为ContainerClass1的类。假设class-type仅包含一个名为“ 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是硬连线的,因此在点符号内,我不能将object-name作为变量来调整我的字段路径。作为解决方法,我声明了九个单独的ContainerFiller-Classes ( ContainerFiller1, …, ContainerFiller9),每个都有一个不同的字段设置器。例如,ContainerFiller2包含一个硬连接的setter object_B.content = 99

我想摆脱多余的类,并从中创建一个ContainerFiller类型的通用类。有没有一种方法可以更改字段设置器概念,我可以在fill(ContainerClass anyObject)的参数列表中引用对象名称并动态调整字段设置器?也欢迎提出点符号替代的建议。

提前致谢

特雷克斯

最佳答案

您可以在构造函数中使用参数:

 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)

07-24 21:11