2014-12-05 6 views
-4

내 CS 클래스의 경우 몇 가지 사전 코드를 사용하고 내 스프레드 시트에서 인터페이스를 사용해야합니다. 이미 몇 개의 클래스, 프로그램, 스프레드 시트, 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)); 
    } 

} 

는 //이 내가 변경할 수 없습니다하고이 클래스 및 인터페이스이며, I는 저장하고 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

관련 문제