为什么我从java编译器中得到一个不兼容的类型?
我是一名Java新手,但我是一名经验丰富的程序员(汇编程序、COBOL、C/C++、REXX) 我不明白为什么编译器会给我以下信息:为什么我从java编译器中得到一个不兼容的类型?,java,string,stringbuffer,Java,String,Stringbuffer,我是一名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 代码: 我将消息\u数据定义为
[loading java\lang\Throwable.class(java\lang:Throwable.class)]
src\LU62XnsCvr.java:265: incompatible types
found : java.lang.String
required: java.lang.StringBuffer
代码:
我将消息\u数据定义为:
static StringBuffer message_data = new StringBuffer();
那么为什么我不能将一个简单的文本String
放入标记为message\u data
的StringBuffer
?
我的意思是这两种类型都是String
。。对吧 否,String
和StringBuffer
是完全不相关的。试一试
message_data.append("LU62XCE0513: Request File I/O Exception =");
当我们这样做时:请注意,StringBuffer
是一个遗留类,最好在新代码中替换为StringBuilder
,除非在不太可能的情况下需要跨线程共享对象。它与源代码兼容,所以只需更改名称就可以了。这两个对象可能都代表一个字符串,但从技术上讲,它们并非都是字符串类型。您可以通过new stringbuffer(message\u data)
直接从字符串创建stringbuffer,只需调用message\u data.toString()
将消息传递给可丢弃文件时,它们并不是完全无关的。这两种方法都实现了CharSequence
@glowcoder-String
“不是”StringBuilder
,如果您想变得挑剔;)@glowcoder:我同意,“完全不相关”有点强,但这是一个常见的新手误解,他们通过继承和/或某种方式可以互换。添加CharSequence
实际上确实在某种程度上使它们通过继承而相关,但是需要CharSequence
参数的方法很少。旧习难改!我同意,这是我自己遇到的一个困难的决定(简化与潜在的混乱)。我只是想把它扔出去。无论哪种方式,它都获得+1,特别是关于StringBuffer
vsStringBuilder
的注释。如果可能,请在此处共享代码。
message_data.append("LU62XCE0513: Request File I/O Exception =");