假如我现在需要两个constructor,他们需要的参数个数和类型都一样,只是语义不一样。
因为不符合override的规则,所以只能通过调整参数的先后顺序来满足要求。
但这绝对不是个好的practice,比较的confusing。
public PaymentTrxInfo(long payerId, String externalOrderId, String paymentDedupeId, long pgTrackingId, PaymentStatusEnum pmtStatus)public PaymentTrxInfo(long payerId, String externalOrderId, String paymentDedupeId, long invoiceId, PaymentStatusEnum pmtStatus)有没有什么好的建议?

解决方案 »

  1.   

    Effective java 第2版
    第一条:考虑用静态工厂方法替代构造器
    第二条:遇到多个构造器参数时考虑使用构建器。
    具体去看书吧
      

  2.   

    是的,我已经回去翻了几遍了。 关键是系统里没有使用builder的惯例,都是用套筒式的(telescoping constructor pattern)。
    所以under this context,估计是无解了
      

  3.   

    2个构造器. 一个就你之前那样子的. 另外一个输入参数用Map类型.
      

  4.   


    public PaymentTrxInfo(long payerId, String externalOrderId, String paymentDedupeId, long invoiceIdorPgTrackingId, PaymentStatusEnum pmtStatus, boolean isFirst) {
    ...
    if(isFirst){
    pgTrackingId = invoiceIdorPgTrackingId;
    }else{
    invoiceId = invoiceIdorPgTrackingId;
    }}由于这台电脑没有编译器 所以没弄缩进 这个能满足楼主的要求吗