一个构造函数 - 多个参数

时间:2010-03-03 17:20:03

标签: java dynamic constructor

我在一些Java编程竞赛中找到了一项任务。必须创建只有一个参数'text'且只有一个构造函数的类Sentence。这是示例测试代码:

 Sentence s1=new Sentence("only","CAT"),
      s2=new Sentence("and", 2, "mice"),
      s3=new Sentence(s1,s2,"completely","alone"),
      s4=new Sentence(s3, "on the ", new Integer(32), "th street");

 System.out.println(s1); Only cat.
 System.out.println(s2); Only cat and 2 mice.
 System.out.println(s3); Only cat and 2 mice completely alone.
 System.out.println(s4); Only cat and 2 mice completely alone on the 32th street.

一个构造函数如何提供不同的参数集?有没有像动态构造函数那样识别发送值的东西?

3 个答案:

答案 0 :(得分:7)

利用varargs

public class Sentence {

    public Sentence(Object... text) {
        // ...
    }

}

自己填写构造函数逻辑。然而,确定所有类型可能会有点糟糕。您可以使用Object#toString()并让Sentence类同时实现一个。

答案 1 :(得分:2)

是的,java 5+支持varargs - 您可以传递相同类型的多个参数,如下所示:

public Constructor(Object... args){..}
public void methodName(Object... args){..}

然后,参数可以作为Object的数组访问。但这并不总是一个好习惯。 Varargs只应用于具有相同逻辑类型的参数。例如,名称列表。如果应该传递多个参数,我建议重载构造函数。

在这种情况下,参数都是相同的逻辑类型 - “word”,所以这是一个很好的方法。

答案 2 :(得分:1)

如果接受Object ...值,则可以使用toString将任何内容转换为字符串。 toString是在Object上定义的,因此每个Object都应该支持它。