最近用强转的时候发现了一个很奇怪的事,就是当我想把一个类转换为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();
}
}
}
以上就是小编在这里收集的“为什么Java中随便一个类都可以被强转为List类且编译不出错”的内容,更多个性签名请关注学步园IT技术社区,给你带来不一样的潮流和惊喜!