为什么我从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
类型..对吗?
这两个对象都可能表示一个字符串,但它们在技术上不是,都是字符串。您可以直接通过new StringBuffer(message_data)
从字符串创建一个字符串缓冲区。
不,String
和StringBuffer
是完全无关的。尝试
message_data.append("LU62XCE0513: Request File I/O Exception =");
虽然我们在这:注意StringBuffer
是传统类,在新代码与StringBuilder
最好更换,除非你需要在线程之间共享的对象较少的情况下。它与源代码兼容,所以只需更改名称即可。
他们并不完全无关。两者都实现'CharSequence'。 – corsiKa 2011-04-22 16:55:38
@glowcoder - 'String'“不是”StringBuilder“,如果你想挑剔;) – 2011-04-22 17:04:45
@ glowcoder:同意,”完全不相关“有点强烈,但这是一个常见的新手误解,他们通过继承关系和/或以某种方式可互换。 'CharSequence'的添加实际上通过某种方式使它们通过继承相关,但想要使用'CharSequence'参数的方法很少。旧习难改! – 2011-04-22 17:14:08
就叫message_data.toString()
将消息传递到Throwable
时,如果可能的话,请在这里共享代码。 – 2011-04-22 17:14:09