如何避免编写许多非常相似的setter方法?

时间:2019-05-27 09:29:20

标签: java

我正在编写适用于以下条件的一段代码:

  1. 我需要在A类实例中实例化许多相似的对象
  2. 然后,这些对象中的每一个将在类B中获得自己的设置器,该设置器与在类A实例中创建的对象1:1相对应 即 在A类中:

        B b = new B();
    
        final SomethingA somethingA1 = new SomethingA("input1");
        b.setSomethingA();
    
        ...
        final SomethingB somethingB15 = new SomethingB("input15");
        b.setSomethingB15();
        ...
    
        final SomethingA somethingA23 = new SomethingA("input23");
        b.setSomethingA23();
    

所有“事物”都继承自同一类。

  1. 设置器只做以下事情:

    public void setSomethingX(somethingX){
    this.somethingX = somethingX; 
    }
    

我真的不想写全部都差不多的23个setter。有像多功能塞特机吗?

其上下文是在非常特定的上下文中准备HTTP响应并使用一些非常特定的框架。显然,这种方式节省了其他地方的很多工作(我对此没有影响)。 另外,您可能会说我是新手开发人员。

2 个答案:

答案 0 :(得分:2)

为此,我将使用Lombok setter/getter

将触发创建这些方法的单个注释。这些设置程序不会污染您IDE中的源代码,并且更易于阅读。

数据类有一个proposal,但尚未实现供参考。

答案 1 :(得分:1)

有一些减少二传手的技术:

1)使用B作为参数创建构造函数

class A {

    private B b;

    public A(B b) {
        this.b = b;
    }    
}  

A a = new A(new B());

2)使用构建器模式(使用龙目岛将很容易实现):

@Builder // lombok annotation
class A {
    private B b;
}

A a = A.builder().withB(b).build();

3)使用工厂方法:

class A {

    private B b;

    public static A newInstance(B b) {
        A a = new A();
        a.b = b;
        return a;
    }

}

A a = A.newInstance(new B());