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

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

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

[loading java\lang\Throwable.class(java\lang:Throwable.class)]
src\LU62XnsCvr.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 ответа

Решение

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

Нет, String а также StringBuffer абсолютно не связаны. Пытаться

message_data.append("LU62XCE0513: Request File I/O Exception =");

Пока мы на это: обратите внимание, что StringBuffer это унаследованный класс, лучше заменить StringBuilder в новом коде, за исключением маловероятного случая, когда вам нужно разделить объект между потоками. Это совместимо с источником, так что просто измените имя, и все в порядке.

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

Другие вопросы по тегам