为什么我从java编译器中获得不兼容的类型?

问题描述:

我是一个Java新手,但我是一个有经验的程序员(汇编程序,COBOL,C/C++,REXX)为什么我从java编译器中获得不兼容的类型?

我不明白为什么编译器是给我下面的:

[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类型..对吗?

+0

时,如果可能的话,请在这里共享代码。 – 2011-04-22 17:14:09

这两个对象都可能表示一个字符串,但它们在技术上不是,都是字符串。您可以直接通过new StringBuffer(message_data)从字符串创建一个字符串缓冲区。

不,StringStringBuffer是完全无关的。尝试

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

虽然我们在这:注意StringBuffer是传统类,在新代码与StringBuilder最好更换,除非你需要在线程之间共享的对象较少的情况下。它与源代码兼容,所以只需更改名称即可。

+3

他们并不完全无关。两者都实现'CharSequence'。 – corsiKa 2011-04-22 16:55:38

+0

@glowcoder - 'String'“不是”StringBuilder“,如果你想挑剔;) – 2011-04-22 17:04:45

+0

@ glowcoder:同意,”完全不相关“有点强烈,但这是一个常见的新手误解,他们通过继承关系和/或以某种方式可互换。 'CharSequence'的添加实际上通过某种方式使它们通过继承相关,但想要使用'CharSequence'参数的方法很少。旧习难改! – 2011-04-22 17:14:08

就叫message_data.toString()将消息传递到Throwable