gpt4 book ai didi

保存 ArrayList 时由泛型引起的 Java 编译器警告

转载 作者:行者123 更新时间:2023-12-02 06:37:44 25 4
gpt4 key购买 nike

这似乎是一个非常标准的问题,但它太简单了,我不知道该怎么办。从我在其他地方读到的内容来看,这是由泛型引起的,当 ArrayList 在没有指定参数的情况下初始化时。我还知道,当我注释掉 ArrayList<Integer> p = (ArrayList<Integer>)is.readObject(); 时,警告不会出现。 ,所以我很确定我尝试强制转换 Object 时编译器存在泛型安全问题。到ArrayList<Integer> 。我怎样才能保存ArrayList不会导致这个?

代码如下:

import java.util.*;
import java.io.*;

public class FileTest
{
public static void main(String[] args)
{
String fileName = "fred.txt";
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(2);
a.add(3);
a.add(4);
try
{
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(fileName));
os.writeObject(a);
os.close();
}
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
try
{
ObjectInputStream is = new ObjectInputStream(new FileInputStream(fileName));
ArrayList<Integer> p = (ArrayList<Integer>)is.readObject();
//for(int i : p) System.out.println(i);
}
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
catch(ClassNotFoundException e){e.printStackTrace();}
}
}

最佳答案

I'm pretty sure there is a generics safety issue with the compiler by me trying to cast the Object to an ArrayList.

不仅仅是泛型安全问题,还是类型安全问题。您假设下一件事是 ArrayList并且您可以安全地将其用作 ArrayList<Integer>.

How can I save the ArrayList without causing this?

你的问题不在于保存它,而在于如何取回它。添加@SuppressWarnings("unchecked")或声明之前的任何内容。

关于保存 ArrayList 时由泛型引起的 Java 编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19463020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com