2014-12-05 62 views
-4

对于我的CS类,我需要使用一些预制代码并使用我的电子表格中的接口。我已经有几个类,Program,SpreadSheet,PersistanceHelper和一个可以接口的接口。如何制作接口对象Java

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)); 
    } 

} 

//这是这个class和interface我不允许改变,我需要使用保存在PersistanceHelper负荷的方法和我在努力创建可保存类型的变量。

+2

你没有提出问题。 – dube 2014-12-05 16:15:23

回答

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); 
0

实现可节省的接口类,通过孩子课说savableImpl。你使用这个接口的对象。

是不是有接口的全部观点。

public class SavableImpl implements Savable{ 
public String[] getSaveData(){ 
// implementation goes here 
} 
public void loadFrom(String[] saveData){ 
    // implementation here 
} 

}

然后你就可以是这样的: -

Savable savable = new SavableImpl(); 

我敢肯定,无论是谁设计的已经存在的类,这意味着相同的工作要做。

+0

似乎我发布的答案与上面的一样。但这只是这个问题的答案。 – Panther 2014-12-05 17:02:49