对于我的CS课程,我需要使用一些预制代码并使用我的电子表格中的界面。我已经有几个类,Program,SpreadSheet,PersistanceHelper和一个Savable接口。
package persistence;
public interface Savable {
public String[] getSaveData();
public void loadFrom(String[] saveData);
}
package persistence;
import java.io.*;
import java.util.*;
public class PersistenceHelper {
public static void save(String filePath, Savable toSave) throws Exception {
String[] data = toSave.getSaveData();
PrintStream out = new PrintStream(new File(filePath));
try {
for (String datum : data) {
out.println(datum);
}
} finally {
out.close();
}
}
public static void load(String filePath, Savable toLoadTo) throws Exception {
ArrayList<String> data = new ArrayList<String>();
Scanner input = new Scanner(new File(filePath));
try {
while (input.hasNextLine()) {
data.add(input.nextLine());
}
} finally {
input.close();
}
String[] dataArray = new String[data.size()];
toLoadTo.loadFrom(data.toArray(dataArray));
}
}
//这是这个类和接口我不允许更改,我需要在PersistanceHelper中使用save和load方法,并且我正在努力创建一个Savable类型的变量。
答案 0 :(得分:0)
interface
只是描述一个类在外部的行为方式。要获取实例,它必须知道如何从声明的函数中检索结果,由实现指定:
public class MySavable implements Savable {
public String[] getSaveData() {
// some code
return whatever;
}
public void loadFrom(String[] saveData) {
// some code
}
}
然后您可以执行以下操作:
Savable s = new MySavable();
String[] strings = s.getSaveData();
s.loadFrom(strings);
答案 1 :(得分:0)
实现savable接口类,由子类说savableImpl。您使用此界面的对象。
是否有接口的全部意义。
public class SavableImpl implements Savable{
public String[] getSaveData(){
// implementation goes here
}
public void loadFrom(String[] saveData){
// implementation here
}
}
然后你可以这样: -
Savable savable = new SavableImpl();
我很确定,无论是谁设计现有的课程,都意味着要做的事情。