Почему я получаю несовместимые типы от компилятора java?


Я новичок в Java, но я опытный программист (ассемблер, COBOL, C/C++, REXX)

Я не могу понять, почему компилятор дает мне следующее:

[loading javalangThrowable.class(javalang:Throwable.class)]
srcLU62XnsCvr.java:265: incompatible types
found   : java.lang.String
required: java.lang.StringBuffer

Код:

message_data = "LU62XCE0513: Request File I/O Exception =" ;

Я определил message_data Как:

static StringBuffer message_data = new StringBuffer();
Так почему же я не могу поместить простой литерал String в StringBuffer, помеченный message_data ? Я имею в виду, что оба типа String .. так ведь ??
3 2

3 ответа:

Оба объекта могут представлять строку, но они технически не являются оба типа string. Вы можете создать stringbuffer из строки непосредственно через new StringBuffer(message_data).

Нет, String и StringBuffer совершенно не связаны. Попробуйте

message_data.append("LU62XCE0513: Request File I/O Exception =");
Обратите внимание, что StringBuffer - это устаревший класс, который лучше всего заменить на StringBuilder в новом коде, за исключением маловероятного случая, когда вам нужно разделить объект между потоками. Он совместим с исходным кодом, поэтому просто измените имя, и все будет в порядке.

Просто вызовите message_data.toString() при передаче сообщения в Throwable