如何创建一个接口对象Java

时间:2014-12-05 16:11:48

标签: java

对于我的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类型的变量。

2 个答案:

答案 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();

我很确定,无论是谁设计现有的课程,都意味着要做的事情。