【发布时间】:2020-07-05 22:05:41
【问题描述】:
我有一个像这样的常量接口文件 ->
public interface MyConstants {
String CONSTANT_ONE = "foo";
String CONSTANT_TWO = "hello";
}
我如何迭代它以获取常量的值?我看到一个使用reflect 的方法,你可以像这样访问它->
Field[] interfaceFields = MyConstants.class.getFields();
for(Field f : interfaceFields) {
f.get(f.getName());
}
这会返回一个对象,但我希望它是字符串类型。我知道我可以进行类型转换,但正确的做法是什么?
【问题讨论】:
-
"我知道我可以进行类型转换,但正确的做法是什么?" 类型转换。
-
是的,类型转换是唯一的方法。这就是反思的本质:它被自然概括。如果您想要强类型,请避免使用反射。请注意,定义枚举既可以提供类型安全,又可以以类型安全的方式列出所有常量。
-
嗯,准确的说是String你也可以像
String str = f.get(null).toString();一样调用toString()方法,但是在其他类型的情况下,强制转换是唯一的方法。
标签: java string reflection constants