有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何避免方法中的许多if/else条件?

我怀疑我的方法是否正确。这是一个URI的合成器,我用它来http requests。它只是从一个带有final Strings的单独静态类中获取数据,将它们合并在一起,并在必要时包括从服务器令牌接收的数据。碰巧所有的URIs都有令牌,只有一个,身份验证,没有令牌。我所做的:

private URI urlComposer(String apiUri, String token) { 
        URI uri = null;
        try {

            if(apiUri.equals("POST_AUTH_URL")) {
                uri = URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, apiUri, null, null);
                return uri; 
            }

            String tmp = apiUri.toString();
            String[] array = tmp.split("<token>");
            tmp = array[0] + auth.getToken() + array[1];

            uri = URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, tmp, null, null);

            if (MyConfig.DEBUG) Log.d("Dev", "Constructed url " + uri);
            return uri; 
        } catch (URISyntaxException e) {
            if (MyConfig.DEBUG) Log.d("Dev", "urlComposer was unable to construct a URL"); 
            e.printStackTrace();
        }
        return null;
    }

试图展望未来,如果我有更多这样的特殊情况,我不喜欢生成更多if/else语句。一方面,我希望只调用一个方法来构造URI,另一方面,我不希望使用这些ifs。我该怎么办


共 (2) 个答案

  1. # 1 楼答案

    理论上,可以使用createURI方法创建一个enum URI_类型(很难从提供的代码片段中导出实际参数)。这样,您只需对特定的枚举值调用此方法,该枚举值将有自己的特定实现

    请参考thisthis了解更多信息。希望有帮助

  2. # 2 楼答案

    如果总是设置URI,只设置不同的URI,则可以使用映射:

    uriMap.put("POST_AUTH_URL", URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, apiUri, null, null));
    

    您可以稍后访问此地图:

    uri = uriMap.get(apiUri);