2017-12-06 15 views
-3

Javaを初めて使用しています。 ResponderクラスをWeatherSystemクラスから切り離そうとしています。しかし、ResponderクラスのPublic NewResponderでエラーが発生します(無効なメソッド宣言、戻り値の型が必要です)、私は実際にこの時点で固執しています。私はNewResponderとResponderですべてのクラスポイントを変更しようとしましたが、修正することはできません。私はなぜこの問題が起こっているのかを指摘できますか? (私はInputReaderクラスも持っていますが、これは以下に含まれていません)。Javaデカップリングの問題

WeatherSystemクラス

 import java.util.HashSet; 

     public class WeatherSystem 
     { 
     private InputReader reader; 
     private NewResponder responder; 

     public WeatherSystem(NewResponder responder) 
     { 
     reader = new InputReader(); 
     this.responder = new Responder(); 
     } 
     public void start() 
     { 
     boolean finished = false; 

     printWelcome(); 

     while(!finished) { 
     HashSet<String> input = reader.getInput(); 

     if(input.contains("exit")) { 
      finished = true; 
     } 
     else { 
      String response = this.responder.generateResponse(input); 
      System.out.println(response); 
     } 
     } 
    printGoodbye(); 

................................. ............

クラスレスポンダ

import java.util.HashMap; 
    import java.util.HashSet; 
    import java.util.ArrayList; 
    import java.util.Iterator; 
    import java.util.Random; 
    import WeatherSystem.NewResponder 

    public class Responder implements NewResponder 
    { 

    private HashMap<String, String> responseMap; 
    private ArrayList<String> defaultResponses; 
    private Random randomGenerator; 

    public NewResponder() 
    { 
    responseMap = new HashMap<>(); 
    defaultResponses = new ArrayList<>(); 
    fillResponseMap(); 
    fillDefaultResponses(); 
    randomGenerator = new Random(); 
    } 


    public String generateResponse(HashSet<String> words) 
    { 
    for (String word : words) { 
     String response = this.responseMap.get(word); 
     if(response != null) { 
      return response; 
     } 
    } 
    return pickDefaultResponse(); 

...... ..............................................

+0

'public NewResponder'を' public Responder'に変更します –

+1

コンストラクタの名前はクラスの名前と一致しなければなりません。 'public NewResponder()'を 'public Responder()'に変更してください。 –

+1

また、これは「デカップリング」とは何が関係していますか?あなたのエラーはこれとは関係ありません。 –

答えて

0

WeatherSystemの内部にインターフェイスNewResponderが必要かどうかを実際に確認する必要があります。間違ったコンストラクタ名を持つResponderクラスに実装している