如何创建在构造函数中返回给定参数ArrayList的方法?
问题描述:
我创建了.dat文件来保存我的对象类上使用implements Serializable
的对象的数组列表。 我有这两类会员和风格,我想将它们保存到ArrayList中的成.dat文件,我已经得到了这一切的工作..如何创建在构造函数中返回给定参数ArrayList的方法?
我创建了一个READDATA类需要一个fileLocation作为参数。再有这些方法
public boolean load() {
public boolean save() {
public ArrayList<Member> getMembers(){
public boolean add(Object [] member) {
Load方法只需要一切从.dat文件,并把它放入数组列表 和保存方法只是保存ArrayList中。像这样的:(只是一些尝试捕捉也;))
/* load Method */
FileInputStream fileIn = new FileInputStream(fileLocation);
ObjectInputStream in = new ObjectInputStream(fileIn);
this.objects = (ArrayList<Member>) in.readObject(); // <-- That Member needs to be generic also..
/* save Method */
File yourFile = new File(fileLocation);
yourFile.createNewFile();
fileOut = new FileOutputStream(fileLocation, false);
out = new ObjectOutputStream(fileOut);
out.writeObject(objects);
,而不是每次都创建一个新的类,我在考虑做与一切工作的通用类。所以我可以使用它是这样的:
ReadData membersFile = new ReadData("members.dat", new Member());
ReadData stylesFile = new ReadData("styles.dat", new Style());
所以不知我的数组列表中READDATA类将ArrayList<Member>
在会员对象从参数来和ArrayList<Style>
时,它的风格。
有人可以帮助我做到这一点?或者帮助我以其他方式实现这一目标?
答
你是如此接近得到这个权利。以下是通用的相关代码。不幸的是,java序列化的对象不能识别类型,所以你需要继续对象。
public <T> ArrayList<T> ReadData(String filename, T type) {
.....
this.objects = (ArrayList<T>) in.readObject();
.....
}
如果您想了解更多关于泛型编程,甲骨文已经写了坚实的tutorial会告诉你的基础知识。
除了更改您的类的方法签名外,您还需要使该类具有通用性。
public class ReadDataMembers<T> {
public ReadDataMember(String filename) {
}
}
你不需要通过构造类型通过,但你可以用下面的语法
ReadDataMembers rdm = new ReadDataMembers<Member>("member.dat");
我并没有真正得到这个工作:/我的满级是在这里:[PasteBin](http://pastebin.com/1zWfUWqy)最重要的部分是我可以使用getMembers(我将它重命名为getObjects),它会返回一个与列表中的对象类型相同的数组列表构造函数。 – Jeggy 2014-12-05 17:16:13
我已经得到它的工作,但它不会返回正确的对象类型,我已经写了一点点在这个文件的顶部:[PasteBin](http://pastebin.com/3g6pUpcy) – Jeggy 2014-12-05 17:42:38
代码在pastebin顶部的注释中没有用类型初始化ReadDataMember类。使用“新的ReadDataMembers(”member.dat“);”作为构造函数。您也可以从方法签名中删除。我认为我们正在制定一个通用的方法,但不是一个通用的类。 –
2014-12-05 17:49:33