【问题标题】:a weird field appear in android studioandroid studio中出现了一个奇怪的字段
【发布时间】:2016-01-07 04:45:40
【问题描述】:

我有一个pojo 课程

运行这段代码

Field[] fields = clazz.getDeclaredFields();

我在Android Studio IDE 下找到了一个字段:

它的类型是接口com.android.tools.fd.runtime.IncrementalChange 它的名字是$change

我的 Android Studio 版本是 2.0 Preview 4

the pojo class which i definded by myself didn't have $change field

当我在eclipse中运行代码时,它工作正常。

这个领域是从哪里来的? 我怎样才能避免这个字段,Android Studio 中有一些设置吗?

【问题讨论】:

    标签: android-studio pojo


    【解决方案1】:

    我们可以通过使用合成修饰符检查来解决此问题,而不是关闭即时运行。 'com.android.tools.fd.runtime.IncrementalChange' 是合成的,所以我们可以使用 isSynthetc 方法检查该字段是否是合成的。

    Field[] fields = objClass.getFields();
    for (Field field : fields) {
                String name = field.getName();
                Object value;
    
                if(field.isSynthetic()){
                    continue;
                }
              //add your code here
                }
    

    【讨论】:

    • 对我不起作用。 java for (Field field : raw.getDeclaredFields()) { if (field.isSynthetic()) { continue; } field.setAccessible(true);
    【解决方案2】:

    此字段很可能是为了支持 Android Studio 2.0 中添加的 Instant Run 功能而添加的,如果您关闭 Instant Run,则不会出现。

    【讨论】:

    • 太棒了!在设置搜索即时运行,有一个复选框默认选中。当我取消选中它时,该字段消失了!谢谢!
    【解决方案3】:

    我觉得diordna的回答最好link。安装运行是Android Studio新功能,我不会关闭的。

    我在我的 sdk 库中使用 JsonTool link,当我使用 androidStudio2.2 JsonTooll.objectToJson() 运行我的应用程序时,给我一个错误的 json 字符串,我添加了代码
    if (name.contains("this$") || field.isSynthetic()) continue;

    解决它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2017-03-20
      相关资源
      最近更新 更多