2015-10-17 27 views
0

假設我有一個函數有整型參數(id)和函數裏面我想創建一個與(id)關聯的類的對象,我不喜歡使用(if else)語句,這可以如何實現。我怎樣才能映射唯一的數字和類在android

請注意,我不能使用類名作爲函數的參數,因爲我使用Proguard。

回答

0

在你的情況,你可以嘗試這樣的事:

interface Factory { 
    Object make(); 
} 

class Foo { 
} 

class Bar { 
} 

public static void main(String... args) { 
    Map<Integer, Factory> mapping = new HashMap<>(); 
    mapping.put(42, new Factory() { 
     @Override 
     public Object make() { 
      return new Foo(); 
     } 
    }); 
    mapping.put(9001, new Factory() { 
     @Override 
     public Object make() { 
      return new Bar(); 
     } 
    }); 

    int someNumber = (int) (Math.random() * 10000); 
    Factory factory = mapping.get(someNumber); 
    Object result; 
    if (factory != null) { 
     result = factory.make(); 
    } 
} 

核心是Map<Integer, /*something*/>而不是switch

+0

但是,如果類的構造函數有輸入參數呢? –

+0

@MHDShaker可能通過將它們添加到'make()'方法 – zapl