java - 字符串缓冲区到字符串转换异常?

标签 java arraylist stringbuffer

你好检查下面的代码

   ArrayList x=new ArrayList();
   ArrayList<String>y=x;
   ArrayList<StringBuffer>z=x;
   y.add("Strings");
   System.out.println(z.get(0).toString());

我在 System.out.println 得到类转换异常

 java.lang.ClassCastException: java.lang.String
 at com.one.MainClass.main(MainClass.java:16)

但是当我尝试的时候

  System.out.println(z.get(0)) 

它正在工作 为什么会这样??

最佳答案

我假设您是在做实验(如果不是,请阅读其他关于您应该如何编写代码的答案)。

x 是一个原始的 ArrayList ,您可以在其中放置任何类型的对象。

y.add("string")添加一个字符串。

z 是一个 ArrayList<StringBuffer>并期待 StringBuffers。当您调用 z.get(0) ,JVM 在返回之前尝试将索引 0 处的元素转换为 StringBuffer。该转换失败。

换句话说,虽然StringBuffer s = z.get(0);编译,它会在运行时抛出 ClassCastException 因为 z.get(0)不是 StringBuffer .

关于java - 字符串缓冲区到字符串转换异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817744/

相关文章:

java - 如何使用Java获取客户端的LAN IP?

Java线程: Wait Notify mechanism with ArrayList

c# - 关于在c#中处理Arraylists的问题

Java 正则表达式匹配标题的 Markdown 语法

java - 为什么 String、StringBuffer 和 StringBuilder 类使用字节数组而不是字符数组来存储字符串的字符?

java - 用spring同时获取object和header

java - 程序输入一个数字,如果它是阶乘数,则输出阶乘序列,否则为 false

java - 在使用 Java API 处理 HDFS 时,我们是否需要显式调用 fs.close()?

java - 在 JavaFX 中使用 ObservableList 是否违背了模型- View - Controller 分离?

java - 如何在Java中读取一行的第一个元素/术语?