现在的位置: 首页 > 编程语言 > 正文

为什么Java中随便一个类都可以被强转为List类且编译不出错

2020年03月20日 编程语言 ⁄ 共 1153字 ⁄ 字号 暂无评论

最近用强转的时候发现了一个很奇怪的事,就是当我想把一个类转换为List时,编译器不会报错,但是如果想转成同为引用类型的String时,编译器就会说不能转,Lis请问t和String的区别在哪里呢?

  List l1 = (List)fileWrite;//不报错

  String s1 = (String)fileWrite;//编译器提示无法转换

  为什么Java中随便一个类都可以被强转为List类且编译不出错

  String虽然也是引用类型,但是它比较特殊,它是内置的类型,并且final不允许继承,所以编译器可以特殊检查。

  别的类型无法检查(或者说开销太大)所以不检查。

  将List 对象写入文件

  怎么将一个List 写入到一个文件中? 操作很容易。

  package com.demo;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.io.OutputStreamWriter;

  import java.util.List;

  public class TestFilewrite

  {

  public static void main(String[] args)

  {

  List info = new ArrayList();

  info.add("语文:100");

  info.add("数学:99");

  writeObject(info);

  }

  public static void writeObject(List fileInfo) {

  try {

  //参数true:覆盖文件中内容,反之

  FileOutputStream fos = new FileOutputStream("E:/1.txt",true);

  //将信息写入文件之后出现乱码情况需要配置字体编码

  OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");

  StringBuffer infoValue=new StringBuffer();

  for(String info:fileInfo){

  infoValue.append(info+"\r\n\r\n");// '\r\n' 是用换行使用

  }

  osw.write(infoValue.toString());

  osw.flush();

  } catch (FileNotFoundException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  }

  

抱歉!评论已关闭.