Я люблю ответ chaowman, но сделал бы одно изменение
int result = 17463.ToString().Sum(c => Convert.ToInt32(c));
, я даже не уверен c - '0', синтаксис работал бы? (substracting два символа должен дать символ в результате, я думаю?)
я думаю, что это - самая читаемая версия (использование суммы слова в сочетании с лямбда-выражением, показывающим, что Вы сделаете это для каждого символа). Но действительно, я не думаю, что это будет самым быстрым.
Из Реализация toString :
public String toString() {
StringBuilder result = new StringBuilder();
String newLine = System.getProperty("line.separator");
result.append( this.getClass().getName() );
result.append( " Object {" );
result.append(newLine);
//determine fields declared in this class only (no fields of superclass)
Field[] fields = this.getClass().getDeclaredFields();
//print field names paired with their values
for ( Field field : fields ) {
result.append(" ");
try {
result.append( field.getName() );
result.append(": ");
//requires access to private field:
result.append( field.get(this) );
} catch ( IllegalAccessException ex ) {
System.out.println(ex);
}
result.append(newLine);
}
result.append("}");
return result.toString();
}
Зачем вам изобретать велосипед, когда есть открытые исходные коды, которые уже неплохо справляются со своей задачей.
Оба apache common-langs и spring поддерживают очень гибкий шаблон компоновщика
Вот как вы делаете это рефлексивно для apache
@Override
public String toString()
{
return ToStringBuilder.reflectionToString(this);
}
Вот как вы это делаете если вы хотите печатать только те поля, которые вам нужны.
@Override
public String toString()
{
return new ToStringBuilder(this)
.append("name", name)
.append("location", location)
.append("address", address)
.toString();
}
Вы можете даже "стилизовать" свой вывод на печать с помощью нестандартного ToStringStyle или даже настроить его в своем собственном стиле.
Я лично не пробовал spring ToStringCreator api, но выглядит очень похоже.
При доступе к значению поля передайте экземпляр, а не null.
Почему бы здесь не использовать генерацию кода? Eclipse, например, сгенерирует для вас реальную реализацию toString.