首页 > 解决方案 > 在 Android 上增强基本颜色类

问题描述

我为后来的 Android API (26+) 编写了很多代码,这些代码支持 Color.valueOf() 和数字颜色通道之类的东西。我想向后移植一些代码以与旧的 API 设备一起使用,而不必将我的 Color 类的每个实例都更改为其他东西。

Java 中有没有一种方法可以修改类,而不必创建具有新功能的派生类?

基本上,我想在我使用的缺失函数中增加 lesser-API Color 类和代码。

在我的想法中,我在概念上看到它是这样的:

augment class Color() {

    // Add in missing functions
    public static int valueOf(float r, float g, float b) {
    }

    public static int valueOf(int r, int g, int b) {
    }

    // Other functions here
}

它将编译默认的 Color 类,添加这些附加功能,以便从那时起,它们可以在较小 API 设备的应用程序中使用。

标签: javaandroidclass

解决方案


Java 中有没有一种方法可以修改类,而不必创建具有新功能的派生类?

抱歉,Java 中没有为此内置任何内容。

请注意,有问题的方法 ( valueOf()) 是static方法。您当前的代码这样称呼它们:

Color.valueOf(foo, bar, goo);

编写一个脚本将这些调用替换为:

RickColorCompat.valueOf(foo, bar, goo);

或者,尝试在 Android Studio 中的路径中编辑 > 查找 > 替换。就个人而言,我有一个命令行gsubRuby 脚本,不久前我为这种搜索和替换工作编写了该脚本。

但是,根据您使用的其他内容 from Color,该方法可能不起作用。


推荐阅读