public static String string(String str) {
stringToReturn = str;
return stringToReturn.trim();
}
Проблема в том, что stringToReturn
является полем экземпляра в ModifyString
, что означает, что оно связано с указанным c экземпляром этого класса. В методе static
такого экземпляра нет.
Непонятно, чего вы пытаетесь достичь, учитывая, что тип возвращаемого значения String
: вы можете просто удалить первый оператор:
public static String string(String str) {
return str.trim();
}
но тогда вы также можете просто вызвать str.trim()
напрямую.
В качестве альтернативы вы могли иметь в виду вернуть экземпляр ModifyString
:
public static ModifyString string(String str) {
return new ModifyString(str.trim());
}
Обратите внимание, что Конкатенация строк - это плохой способ накопления строк, поскольку для выполнения конкатенации требуется копирование существующей строки.
Лучшим подходом было бы использование StringBuilder
, либо напрямую, либо с переносом:
class ModifyString {
private final StringBuilder sb;
ModifyString(String str) {
sb = new StringBuilder(str.trim());
}
ModifyString append(String str) {
sb.append(str.trim());
return this;
}
}