Просто для добавления дополнительной информации относительно toString()
и String.valueOf()
.
String.valueOf()
нельзя полагаться на получение имени класса Apex во время выполнения.Я не думаю, что это задокументировано, но если вы добавите метод toString()
в свой пользовательский класс с ключевым словом override, то String.valueOf()
будет использовать его для определения строкового значения вашего объекта.
class MyClassDefaultToString {
}
class MyClassOverrideToString {
public override String toString() {
return 'override toString';
}
}
MyClassDefaultToString c1 = new MyClassDefaultToString();
System.assertEquals('MyClassDefaultToString:[]', String.valueOf(c1));
MyClassOverrideToString c2 = new MyClassOverrideToString();
System.assertNotEquals('MyClassOverrideToString:[]', String.valueOf(c2));
System.assertEquals('override toString', String.valueOf(c2));