gpt4 book ai didi

java - 从 Color 实例获取表示颜色名称的字符串

转载 作者:行者123 更新时间:2023-12-01 22:54:58 25 4
gpt4 key购买 nike

如何从 Color 类的实例中获取表示颜色名称的字符串(而不是 awt RGB 代码)?

例如我有

Color black=Color.BLACK;

我想获取字符串“Black”

我知道使用 Java 反射应该可以实现这一点,但我对此不太熟悉。谢谢。

最佳答案

Color 类只有几个非静态字段

name      | type         
----------+---------------
value | int
frgbvalue | float[]
fvalue | float[]
falpha | float
cs | java.awt.color.ColorSpace

并且这些字段都不存储颜色名称。此外,它没有任何方法来检查您使用的颜色是否等于其预定义颜色之一并存储在静态引用中,例如

public final static Color black = new Color(0, 0, 0);
public final static Color BLACK = black;

但是没有什么可以阻止你实现你自己的方法,它会为你做这件事。这种方法看起来像

public static Optional<String> colorName(Color c) {
for (Field f : Color.class.getDeclaredFields()) {
//we want to test only fields of type Color
if (f.getType().equals(Color.class))
try {
if (f.get(null).equals(c))
return Optional.of(f.getName().toLowerCase());
} catch (IllegalArgumentException | IllegalAccessException e) {
// shouldn't not be thrown, but just in case print its stacktrace
e.printStackTrace();
}
}
return Optional.empty();
}

使用示例

System.out.println(colorName(Color.BLACK).orElse("no name found"));
System.out.println(colorName(new Color(10, 20, 30)).orElse("no name found"));
System.out.println(colorName(null).orElse("no name found"));

输出:

black
no name found
no name found

关于java - 从 Color 实例获取表示颜色名称的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24232438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com