2015-03-26 3 views
0

У меня есть конструктор, как этоткак проверить, какой конструктор делает пользователь использовать

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

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

И я хочу, чтобы переопределить мой ToString() метод как этот

@Override 
    public String toString() 
    { 
     if(no middle name) 
     {return getFirstName() + " " + getLastName();} 
     else if(has a middle name) 
     {return getFirstName() + " " + getMiddleName() + " " + getLastName();} 
    } 

Что я должен делать?

+3

Похоже, вы должны проверить 'ли middleName' является нулевым или пустым ... –

+0

Да, я с Джон Скит. Ваш псевдокод работает, вам просто нужно его реализовать? Если вы хотите проверить, какой конструктор был использован, вы также можете установить частное поле 'constructorUsed' с идентификатором используемого конструктора, но я не могу придумать для этого пример использования. –

ответ

2
@Override 
public String toString() 
{ 
    if(middleName == null) 
    {return getFirstName() + " " + getLastName();} 
    else 
    {return getFirstName() + " " + getMiddleName() + " " + getLastName();} 
} 

Вы можете проверить Guava's Strings для isNullOrEmpty(), например, (И только один return, который, как riccardo.cardin указывает, лучше практика):

@Override 
public String toString() 
{ 
    String nameString = null; 

    if (Strings.isNullOrEmpty(middleName)) 
    { 
     nameString = getFirstName() + " " + getLastName(); 
    } 
    else 
    { 
     nameString = getFirstName() + " " + getMiddleName() + " " + getLastName(); 
    } 

    return nameString; 
} 
+0

Спасибо, не знал, что я могу проверить это. – Lenic

+0

@ jbrown, пожалуйста, у вас нет нескольких '' '' '' возврата в одном методе. И не используйте конкатенацию String ('+' operator): используйте 'StringBuilder' или метод' String.format (...) '. –

+0

@ riccardo.cardin Согласно другим ответам SO, компиляторы автоматически оптимизируют конкатенацию в StringBuilders, поэтому конкатенация дает более читаемый код с одинаковыми преимуществами. Если бы код был в цикле, StringBuilder был бы более эффективным, но здесь он не нужен. – jbrown

Смежные вопросы