Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查用户使用的构造函数_Java_String - Fatal编程技术网

Java 如何检查用户使用的构造函数

Java 如何检查用户使用的构造函数,java,string,Java,String,我有这样的构造函数 public Name(String firstName, String lastName) { setFirstName(firstName); setLastName(lastName); } public Name(String firstName, String lastName, String middleName) { setFirstName(firstName); setLastName(lastNam

我有这样的构造函数

    public Name(String firstName, String lastName)
{
    setFirstName(firstName);
    setLastName(lastName);        
}

public Name(String firstName, String lastName, String middleName)
{
    setFirstName(firstName);
    setLastName(lastName);
    setMiddleName(middleName);
}
    @Override
    public String toString()
    {
        if(no middle name)
        {return  getFirstName() + " " + getLastName();}
        else if(has a middle name)
        {return  getFirstName() + " " + getMiddleName() + " " + getLastName();}
    }
我想像这样重写我的toString()方法

    public Name(String firstName, String lastName)
{
    setFirstName(firstName);
    setLastName(lastName);        
}

public Name(String firstName, String lastName, String middleName)
{
    setFirstName(firstName);
    setLastName(lastName);
    setMiddleName(middleName);
}
    @Override
    public String toString()
    {
        if(no middle name)
        {return  getFirstName() + " " + getLastName();}
        else if(has a middle name)
        {return  getFirstName() + " " + getMiddleName() + " " + getLastName();}
    }
我该怎么办

@Override
public String toString()
{
    if(middleName == null)
    {return  getFirstName() + " " + getLastName();}
    else
    {return  getFirstName() + " " + getMiddleName() + " " + getLastName();}
}
例如,您可能希望签出isNullOrEmpty()(并且只使用一个
返回值
,正如riccardo.cardin指出的,这是更好的做法):


听起来你应该检查
middleName
是空的还是空的……是的,我和Jon Skeet在一起。你的伪代码有效,你只需要实现它?如果您想检查使用了哪个构造函数,您还可以使用所用构造函数的标识符设置一个私有字段
constructorUsed
,但我想不出一个真正的用例。谢谢,我不知道我可以用这种方式检查。@jbrown,请不要在一个方法中有多个
返回
s。不要使用
String
串联(
+
运算符):使用
StringBuilder
或方法
String.format(…)
@riccardo.cardin根据其他SO答案,编译器将自动优化串联到StringBuilder中,因此串联可以提供具有相同优点的可读代码。如果代码在循环中,StringBuilder会更有效,但在这里它是不必要的。@jbrown,很抱歉,你是对的。但是关于多个
return
语句的故事仍然存在;)我认为有两个返回语句的代码更可读。在这种情况下,我认为没有理由避免这种情况。有关此主题的大量讨论,请参见。