2014-12-05 2 views
-4

Для моего класса CS я должен использовать некоторый готовый код и использовать интерфейс в своей электронной таблице. У меня уже есть несколько классов: Program, SpreadSheet, PersistanceHelper и интерфейс Savable.Как создать объект интерфейса 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)); 
    } 

} 

// Это этот класс и интерфейс мне не позволено менять, и я должен использовать сохранение и методы нагрузки в PersistanceHelper и борется, чтобы создать переменные сохраняющиеся типа.

+2

у вас не возник вопрос. – dube

ответ

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

Смежные вопросы