作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 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/
我是一名优秀的程序员,十分优秀!