0
假設我有一個函數有整型參數(id)和函數裏面我想創建一個與(id)關聯的類的對象,我不喜歡使用(if else)語句,這可以如何實現。我怎樣才能映射唯一的數字和類在android
請注意,我不能使用類名作爲函數的參數,因爲我使用Proguard。
假設我有一個函數有整型參數(id)和函數裏面我想創建一個與(id)關聯的類的對象,我不喜歡使用(if else)語句,這可以如何實現。我怎樣才能映射唯一的數字和類在android
請注意,我不能使用類名作爲函數的參數,因爲我使用Proguard。
在你的情況,你可以嘗試這樣的事:
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
。
但是,如果類的構造函數有輸入參數呢? –
@MHDShaker可能通過將它們添加到'make()'方法 – zapl