2017-05-31 20 views
0

天気が可能かどうかを知りたい場合、スイッチケースのような条件文を使わずに整数値に基づいて別のクラスを呼び出す方法はありますか?スイッチケースやif-elseなしで複数のクラスを呼び出す

私が午前ことです:私は何をしたいことのようである

int val = // getting some value here from a method 
String data = // getting some value here from a method 

switch(val) 
{ 
    case 1: 
    { 
     new TempClass1(data); 
     break; 
    } 

    case 2: 
    { 
     new TempClass2(data); 
     break; 
    } 
} 

int val = // getting some value here from a method 
String data = // getting some value here from a method 
new TempClass(val, data); 

これは "ヴァル"

すべてのヘルプに従ってTempClass1またはTempClass1のオブジェクトを呼び出す必要があります感謝されます。

+0

をこれが「ヴァル」に従ってTempClass1またはTempClass1のオブジェクトを呼び出す必要がありますか?どちらのクラスも同じです。 'if ... else if'条件を使用する –

答えて

0

たぶん、あなたの2つのクラスがTempBaseClassという名前の基本クラスを共有すると仮定すると、クラスのファクトリを使用します。

class TempClassFactory { 

    static public TempBaseClass getTempClass(int val, String data) 
    { 
     switch(val) 
     { 
      case 1: 
      { 
       return new TempClass1(data); 
       break; 
      } 

      case 2: 
      { 
       return new TempClass2(data); 
       break; 
      } 

      default: 
       throw new Exception("Bad value"); 
     } 
    } 

} 

int val = // getting some value here from a method 
String data = // getting some value here from a method 
TempClassFactory::getTempClass(val, data); 
+0

" TempClass "の数が約150になり、すべての" TempClass "に固有の作業があるため、条件付き構文を使用したくありません。そのため、個々のコンストラクタを呼び出しても意味がありません。可能であれば、別のやり方を探しています。 – Aman

+0

あなたはクラスのどこかを区別しなければなりません。あなたができることは、共通の抽象基本クラスを使用してすべての共通コードを配置することです。 – Adder

関連する問題