java - 如何在 Single 方法中为不同的端点创建对象,而不是在 java 中使用 if 循环

标签 java

if (type.equalsIgnoreCase("Android")) {
    return new AndroidApi;
} else if (type.equalsIgnoreCase("iOS")) {
    return new  IosAPi;
} else if (type.equalsIgnoreCase("Windows")) {
    return new WindowsApi;
}

我如何创建对象而不是 if 条件 那里有 20 个端点。

最佳答案

您可以将 API 实现的类型和供应商放在一个映射中,例如:

public static final Map<String, Supplier<Api>> supplierMap = Map.of(
        "android",  AndroidApi::new,
        "ios",      IosApi::new,
        "windows",  WindowsApi::new
);

public static Api getApi(String type) {
    return supplierMap.get(type.toLowerCase()).get();
}

假设它们都实现了一个接口(interface)。 你可以这样调用上面的方法:

Api api = getApi("Android");

关于java - 如何在 Single 方法中为不同的端点创建对象,而不是在 java 中使用 if 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839264/

相关文章:

java - 从Java文件写入jsp文件

java - 响应式(Reactive)编程的优点/缺点

Java:在 HttpSession 中保留对 ArrayList 的 SoftReference 有任何问题/负面影响吗?

java - 如何避免转换 CDATA 格式中存在的标签

java - Spring 安全: remember-me cookie is created in the browser but password is not saving

java - 对结果应用过滤器

java - 在java中选择随机颜色

java - 错误 : a *different* void method cannot be stubbed with a return value

java - 平板扫描仪中的 ADF

java - 为什么我在 Java 中得到 NoClassDefFoundError?