Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么要使用Uri.Builder_Java_Android - Fatal编程技术网

Java 为什么要使用Uri.Builder

Java 为什么要使用Uri.Builder,java,android,Java,Android,我正在使用StringBuilder创建URI以使用jsonapi进行迭代 有些人建议为此使用Uri.Builder,但无法解释原因。这难道不是多余的吗?假设您谈论的是android.net.Uri(而不是java.net.Uri),我认为有三个原因: 它为您进行URL编码,以防您的HTTP客户机/库/任何东西不这样做 它有添加查询参数的方便方法(例如appendQueryParameter) 它进行了一些验证(但是,正如文档所说,您不应该依赖于此) 我想说的是,这并不是你要开始圣战的东西,但我

我正在使用
StringBuilder
创建
URI
以使用jsonapi进行迭代


有些人建议为此使用
Uri.Builder
,但无法解释原因。这难道不是多余的吗?

假设您谈论的是
android.net.Uri
(而不是
java.net.Uri
),我认为有三个原因:

  • 它为您进行URL编码,以防您的HTTP客户机/库/任何东西不这样做
  • 它有添加查询参数的方便方法(例如
    appendQueryParameter
  • 它进行了一些验证(但是,正如文档所说,您不应该依赖于此)

  • 我想说的是,这并不是你要开始圣战的东西,但我不喜欢使用
    Uri
    ,因为这个类是Android SDK的一部分-这使得你的组件自动依赖于Android操作系统(因此测试和维护有点困难)。

    你到底想实现什么?如果您试图访问一个API,那么有一些库可以很好地处理它,而无需做很多工作,例如翻新,有许多大型项目没有该库。这是一个很好的解释。如果您正在创建Uri,为什么不使用专门为其设计的工具呢?首先,
    Uri
    Uri
    是不同的,而且
    Uri
    很少用于网络。@poss:这是关于.net的,不是关于java.war的。Android代码通常非常依赖于Android。它将只用于线程调度。(无论如何,
    Uri
    不是为联网而设计的,而是为本地资源而设计的,因为Android中的默认HTTP客户端现在是
    HttpUrlConnection
    ,它使用
    URL
    ,是纯java)。
    Uri不是为联网而设计的,而是为本地资源而设计的
    ——有趣的是,一个叫做android.net的软件包是的,我刚刚注意到了。这确实很有趣,但我真的不记得我上次在实际网络中使用它是什么时候了。我发现它更常用于
    ContentResolver
    :联网要么涉及HttuUrlConnection,要么涉及更高级别的客户机,要么涉及诸如Volley或reformation之类的库,这两种方式都不使用
    Uri
    interfaces@njzk2它不必直接接受
    Uri
    。通常是:1。构建
    Uri
    ;2.将其转换为
    字符串
    。再一次,我不提倡这种方法——只是看了好几遍。还有另一种用法是
    Uri
    -intent过滤器