java - 在 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 设备的应用程序中使用。
解决方案
Java 中有没有一种方法可以修改类,而不必创建具有新功能的派生类?
抱歉,Java 中没有为此内置任何内容。
请注意,有问题的方法 ( valueOf()
) 是static
方法。您当前的代码这样称呼它们:
Color.valueOf(foo, bar, goo);
编写一个脚本将这些调用替换为:
RickColorCompat.valueOf(foo, bar, goo);
或者,尝试在 Android Studio 中的路径中编辑 > 查找 > 替换。就个人而言,我有一个命令行gsub
Ruby 脚本,不久前我为这种搜索和替换工作编写了该脚本。
但是,根据您使用的其他内容 from Color
,该方法可能不起作用。