1

我有一个可以用 , 和 构造StringRecordCriteria。有没有办法让方法签名以任何顺序接受这些参数(除了创建多个构造函数)?这更像是一个学术问题。

4

3 回答 3

6

不,语言规范没有提到这种简单的方法。

您始终可以通过Objects 并自己执行类型检查,但这是错误的方法。

Java不允许命名参数(在链接中绕过它的方法)

于 2013-05-22T17:13:24.637 回答
3

一种选择是创建一个包含并表示这三个参数的类,但我只建议如果这三个参数以在对象模型中具有逻辑意义的方式相关。

于 2013-05-22T17:14:53.273 回答
1

你可以这样做:

public class MyClass ()
{

  private String _str;
  private Record _rec;
  private Criteria _crit;

  public MyClass ()
  {
    _rec = null;
    _crit = null;
    _str = null;
  }

  public MyClass string (String str)
  {
    this._str = str;
    return this;
  }

  public MyClass record (Record rec)
  {
    this._rec = rec;
    return this;
  }

  public MyClass criteria (Criteria crit)
  {
    this._crit = crit;
    return this;
  }

  public static void getInstance ()
  {
    return new MyClass ();
  }

  public static void main (String[] args)
  {
     MyClass instance = MyClass.getInstance ().string("something").criteria(someCriteria).record(someRecord);
  }
}
于 2013-05-22T17:26:40.347 回答