java - 为什么 length() 用于在 Android 中的 json 解析中获取数组的大小?

标签 java android

虽然通常我们使用长度变量来获取数组的大小 例如这是一个 fragment

JSONObject jsonData = new JSONObject(getmData());
JSONArray itemsArray = jsonData.getJSONArray(FLICKR_ITEMS);
for (int i= 0;i<itemsArray.length();i++) {
    JSONObject jsonPhoto =itemsArray.getJSONObject(i);
    String title = jsonPhoto.getString(FLICKR_TITLE);
    String author = jsonPhoto.getString(FLICKR_AUTHOR);
}

最佳答案

这是因为您不是在访问数组,而是在 JSONArray 上调用方法。

允许直接访问字段是一种不好的做法,因为它搞砸了继承,阻止你控制谁可以设置它的值,在需要这些东西时禁止同步等,所以长度字段是通过一个方法公开的。请参阅 Effective Java 第 2 版第 14 项:

In public classes, use accessor method, not public fields

关于java - 为什么 length() 用于在 Android 中的 json 解析中获取数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32900801/

相关文章:

android - 如何在 Android 中创建带有单选按钮的子菜单?

android - CardView 圆角未显示在 Android 预览中

java - 当用户点击外部时,警报对话框消失

java - 是否存在 Bigdecimal 与 MathContext.DECIMAL32 无法提供正确结果的情况?

java - 将注释插入 Jackson 的 Retrofit 请求中

java - 从后台线程更均匀地分散负载

java - Nexus 是存档版本(jar-with-dependencies、WAR 文件、tar.gz、zip 等)的正确位置吗?

java - 如果字段实现了接口(interface),如何实现该接口(interface)

android:layout_marginRight 属性不适用于 RelativeLayout

android - Android AsyncTask onPostExecution 中的空异常