gpt4 book ai didi

java - 在 Android Java 代码中使用泛型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:34 25 4
gpt4 key购买 nike

我是 Java 的新手,所以我不确定这是否可行。基本上我需要将文件反序列化为给定类型的对象。基本上该方法将执行此操作:

FileInputStream fis = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fis);
MyClass newObject = (MyClass)in.readObject();
in.close();
return newObject;

我希望这个方法是通用的,因此我可以告诉它我想要 in.readObject() 将其输出转换成什么类型​​,然后返回它。

希望这是有道理的……话又说回来,我可能没有正确理解泛型,这实际上是不可能的,也不可取。

谢谢,D.

最佳答案

我不确定 Android(或它可能有的任何限制),但在 Java 中你可以这样做:

public static <T> T getObject(String filename) throws IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fis);
T newObject = (T) in.readObject();
in.close();
return newObject;
}

然后像这样调用它

MyClass myObj = getObject("in.txt");

虽然这会给你一个未经检查的转换警告,因为编译器不能确定你可以将接收到的对象转换为提供的类型,所以它不是完全类型安全的。您需要确保您从输入流中获得的内容实际上可以转换为该类,否则您将获得 ClassCastException。您可以通过使用 @SuppressWarnings("unchecked")

注释方法来抑制警告

关于java - 在 Android Java 代码中使用泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3810854/

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