2017-07-09 6 views
0

私は同じことを行うが、異なる方法で2つのクラスを持っています。私は設定の設定に応じて、これらのクラスのいずれかのオブジェクトを作成する必要があります。ここで私は何をしたいのかの簡単な例です。Androidは同様のクラスのオブジェクトを作成します

public class A { 
    public string getLetter() { 
     return "A"; 
    } 
} 
public class B { 
    public string getLetter() { 
     return "B"; 
    } 
} 

public class MainActivity { 
    private myObject; // How to declare it in my case? 
    private int config = 0; 

    public void onCreate(Bundle savedInstanceState) { 
     if (config == 0) { 
      myObject = new A(); 
     } else { 
      myObject = new B(); 
     } 
     String letter = myObject.getLetter(); 
    } 
} 

は、実はすべてがはるかに複雑です。クラスAおよびBのそれぞれは、異なるデータソースを非同期的にリッスンし、さらなる処理で使用できる形式に変換し、MainActivityに渡します。構成によっては、1つのデータソースのみを選択する必要があります。これどうやってするの?バリアントwith

letter = A.getLetter(); 

は動作しません。

答えて

0

これは動作するはずです:

public class A { 
    public String getLetter() { 
     return "A"; 
    } 
} 
public class B { 
    public String getLetter() { 
     return "B"; 
    } 
} 

public class MainActivity { 


    private int config = 0; 

    public void onCreate(Bundle savedInstanceState) { 


     String letter=""; 
     if (config == 0) { 
      A myObject = new A(); 
      letter = myObject.getLetter(); 
     } else { 
      B myObject = new B(); 
      letter = myObject.getLetter(); 
     } 


    } 
} 
0

interfaceまたはabstract classを使用し、クラスAおよびBで実装または拡張します。

public interface Letter { 
    String getLetter(); 
} 
public class A implements Letter { 
    public String getLetter() { 
     return "A"; 
    } 
} 
public class B implements Letter { 
    public String getLetter() { 
     return "B"; 
    } 
} 


// Then you can declare and use it as interface 
private Letter myObject; 

// init logic 
... 
String letter = myObject.getLetter(); 
関連する問題