我为后来的 Android API (26+) 编写了很多代码,它们支持 Color.valueOf() 和数字颜色 channel 等内容。我想向后移植一些代码以与较旧的 API 设备一起使用,而不必将 Color 类的每个实例更改为其他内容。
Java 中有没有一种方法可以修改类,而无需创建具有新功能的派生类?
基本上,我想在我使用的缺失函数中增加较少的 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 较少的设备中的应用程序中使用。
最佳答案
Is there a way in Java to modify a class without having to create a derived class with the new functionality?
抱歉,Java 中没有内置任何内容。
请注意,相关方法 (valueOf()
) 是静态
方法。您当前的代码如下调用它们:
Color.valueOf(foo, bar, goo);
编写一个脚本来替换这些调用并不需要太多:
RickColorCompat.valueOf(foo, bar, goo);
或者,尝试在 Android Studio 中的路径中编辑 > 查找 > 替换。就我个人而言,我有一个命令行 gsub
Ruby 脚本,是我不久前为此类搜索和替换工作编写的。
不过,根据您使用 Color
中的其他内容,该方法可能不起作用。
关于java - Android 上增强基色类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60290989/