android - android中Property类的用例是什么

标签 android

我刚刚注意到属性类 http://developer.android.com/reference/android/util/Property.html .我可以在这里看到一些解释 http://developer.android.com/about/versions/android-4.0.html#api但并不真正了解它的用例。如果有人能指出一些我可以更深入地理解这一点的代码 fragment ,那就太好了。

最佳答案

属性是反射的包装器。

比如你有一个对象

public class A {
    private int fieldOfA;
    private int fieldTwo;
    private int fieldThree;

    public void setFieldOfA(int a) {
        fieldOfA = a;
    }

    public int getFieldOfA() {
        return fieldOfA;
    }

    public void setFieldTwo(int a) {
        fieldTwo = a;
    }

    public int getFieldTwo() {
        return fieldTwo;
    }

    public void setFieldThree(int a) {
        fieldThree = a;
    }

    public int getFieldThree() {
        return fieldThree;
    }
}

如果你需要更新phew字段,你必须在没有属性的更新方法中知道他们所有的名字

private void updateValues(final A a, final int value) {
    a.setFieldOfA(value);
    a.setFieldTwo(value);
    a.setFieldThree(value);
}

使用属性,您只能更新属性。

Property aProperty = Property.of(A.class, int.class, "fieldOfA");
Property bProperty = Property.of(A.class, int.class, "fieldTwo");
Property cProperty = Property.of(A.class, int.class, "fieldThree");

Collection<Property<A, Integer>> properties = new HashSet<>();
properties.add(aProperty);
properties.add(bProperty);
properties.add(cProperty);

updateValues(a, 10, properties);

方法是

private void updateValues(final A a, final int value, final Collection<Property<A, Integer>> properties) {
    for (final Property<A, Integer> property : properties) {
        property.set(a, value);
    }
}

正如 laalto 提到的,属性动画使用类似的机制。

关于android - android中Property类的用例是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768810/

相关文章:

android - 如何使用 ViewModel 和 Databinding 实现验证?

android - 覆盖android autocompletetextview中的过滤器结果?

android - 如何改进 kotlin lambda 语法?

android - 使用 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 获取所有 MotionEvents

android - 如何在 BubbleChart 中显示 x 轴标签?

android - 如何在没有 singleTop 的情况下使用 Android SearchView?

android - firebase_crashlytics_collection_enabled 在新的 Firebase Crashlytics SDK 中不起作用

java - OOD - 将数据传递给模型 (MVC)

android - flowplayer可以处理rtsp流吗?

java - IntelliJ IDEA Buildtools 24.0.2 需要 Java 1.8 或更高版本。当前 JDK 版本是 1.7