Java 如何在android中映射唯一的数字和类

Java 如何在android中映射唯一的数字和类,java,android,class,Java,Android,Class,假设我有一个具有整数参数(id)的函数,在函数中我想创建一个与(id)相关联的类对象,我不想使用(if-else)语句,这是如何实现的 注意,我不能使用类名作为函数的参数,因为我使用Proguard 在您的情况下,您可以尝试以下方法: interface Factory { Object make(); } class Foo { } class Bar { } public static void main(String... args) { Map<Integer

假设我有一个具有整数参数(id)的函数,在函数中我想创建一个与(id)相关联的类对象,我不想使用(if-else)语句,这是如何实现的


注意,我不能使用类名作为函数的参数,因为我使用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();
    }
}
接口工厂{
对象make();
}
福班{
}
分类栏{
}
公共静态void main(字符串…参数){
Map mapping=newhashmap();
mapping.put(42,新工厂(){
@凌驾
公共对象生成(){
返回新的Foo();
}
});
映射。放置(9001,新工厂(){
@凌驾
公共对象生成(){
返回新条();
}
});
int someNumber=(int)(Math.random()*10000);
Factory=mapping.get(someNumber);
客观结果;
如果(工厂!=null){
结果=工厂制造();
}
}

核心是一个
映射
而不是一个
开关

,但是如果类的构造函数有输入参数呢?@MHDShaker可能通过将它们添加到
make()
方法中来实现