【问题标题】:How to use same java method for different parameters types?如何对不同的参数类型使用相同的java方法?
【发布时间】:2022-11-14 08:27:24
【问题描述】:

我的问题:

我有 2 个定义的类

  • 创建对象请求
  • 更新对象请求

必须通过实用方法验证。

由于这两个对象具有相同的字段,因此可以对两种类型应用相同的验证方法。
现在我只是通过使用 2 种方法来重载,但这很冗长。

public class CreateObjectRequest {
    CustomObjectA a;
    CustomObjectB b;
}
public class UpdateObjectRequest {
    CustomObjectA a;
    CustomObjectB b;
}

public void validateRequest(CreateObjectRequest createObjectRequest) {
    //long body
    //...
}
public void validateRequest(UpdateObjectRequest updateObjectRequest) {
    //same long body... 
    //...
}

如何减少此代码的冗长?

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    制作一个接口并让这个对象实现它。 然后你可以把这个接口作为你的方法的参数。

    【讨论】:

    • 抽象类可能更适合,因为接口中的字段实际上是不可能的。
    【解决方案2】:

    如果这两个类共享许多相同的字段并且彼此相关,那么创建一个抽象父类将是一种解决方案:

    public abstract class ObjectRequest {
        CustomObject a;
        CustomObject b;
    
    }
    

    然后让您的其他类通过继承扩展该类:

    public class CreateObjectRequest extends ObjectRequest {
        // any fields / method that are specific to this class
    }
    
    public class UpdateObjectRequest extends ObjectRequest {
        // any fields / method that are specific to this class
    }
    

    然后您可以定义您的验证方法以将抽象超类作为参数:

    public void validateRequest(ObjectRequest objectRequest) {
        //long body
        //...
    }
    

    【讨论】:

      猜你喜欢
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      相关资源
      最近更新 更多