如何创建在构造函数中返回给定参数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"); 
+0

我并没有真正得到这个工作:/我的满级是在这里:[PasteBin](http://pastebin.com/1zWfUWqy)最重要的部分是我可以使用getMembers(我将它重命名为getObjects),它会返回一个与列表中的对象类型相同的数组列表构造函数。 – Jeggy 2014-12-05 17:16:13

+0

我已经得到它的工作,但它不会返回正确的对象类型,我已经写了一点点在这个文件的顶部:[PasteBin](http://pastebin.com/3g6pUpcy) – Jeggy 2014-12-05 17:42:38

+1

代码在pastebin顶部的注释中没有用类型初始化ReadDataMember类。使用“新的ReadDataMembers (”member.dat“);”作为构造函数。您也可以从方法签名中删除。我认为我们正在制定一个通用的方法,但不是一个通用的类。 – 2014-12-05 17:49:33