bugfix> java > 投稿

皆さん、昨日の私の経験を要約するために、私はあなたに完全に正直でなければなりません。共通の技術部分についての面接を受けました。その就職面接では、読みやすさを改善し、複雑さを軽減するために、コードをリファクタリングするのに10分もかかりました。 しかし、!、セッターの一部で立ち往生しました。テーブルに置くだけです。インターフェイスを実装する1つのクラスからインスタンス化された2つのオブジェクトがあります。

public class test{
  private MyClass obj1 = new MyClass();
  private MyClass obj2 = new MyClass();
  public void setGenericMyClass(IMyClass myClass) {
    //insert code here to set obj1 or obj2 in the same method
 } 
}

どうすれば実装できますか?筆記テストでは(はい、ペンで)Java 8以降を使用できます。

回答 1 件
  • 質問をよく理解できませんが、両方を設定する必要がありますか?それらをインターフェイスインスタンスとして定義し、新しい値を与えるだけです。

    public class test{
      private IMyClass obj1 = new MyClass(); //Use interface here
      private IMyClass obj2 = new MyClass(); //Use interface here
      public void setGenericMyClass(IMyClass myClass) {
         obj1=myClass;
         obj2=myClass;
     } 
    }
    
    

    同じオブジェクトへの2つの参照を保存する必要があるのはなぜかというコメントがあるので、例を挙げます。実際には実際には多くのことが起こります。 2つのオブジェクトが必要であり、それらを使用して使用します。クラスのユーザーが同じインスタンスを渡したい場合は、理由があるかもしれません。これはオフィス用のサンプルコードです。オフィスマシンをコピーしたくないので、2つのオブジェクトがあります。

    class Office {
      private IPrinter printer;
      private IScanner scanner;
      public void setPrinter(IPrinter printer) {..}
      public void setScanner(IScanner scanner) {..}
      void print() { printer.print(); }
      void scan() { scanner.scan(); }
      public void setBigOfficeMachine(IOfficeMachine machine){
        printer=machine;  //IOfficeMachine is an IPrinter
        scanner=machine;  //IOfficeMachine is an IScanner
      }
    
    }
    
    

あなたの答え