20 java string reflection
我有一个方法:
public void extractStringFromField(Class<?> classToInspect) {
Field[] allFields = classToInspect.getDeclaredFields();
for(Field field : allFields) {
if(field.getType().isAssignableFrom(String.class)) {
System.out.println("Field name: " + field.getName());
// How to get the actual value of the string?!?!
// String strValue = ???
}
}
}
Run Code Online (Sandbox Code Playgroud)
当这个运行时我输出如下:
Field name: java.lang.String
Run Code Online (Sandbox Code Playgroud)
现在我该怎样提取实际字符串值入strValue,使用反射?
Owe*_*wen 34
看起来您需要对类的实例的引用.您可能希望调用get并传入引用,将返回值转换为String.
您可以使用如下获取:
String strValue = (String) field.get (objectReference);
Run Code Online (Sandbox Code Playgroud)
在理想情况下,Class不保存数据.它仅包含有关其实例的结构和行为的信息以及Classes保存数据的实例.因此,extractStringFromField除非您传递任何实例(从实际提取值的位置),否则您的方法无法提取值.
如果引用的参数名称,你传递给提取值是instance,那么你可以很容易地得到你想要的如下:
String strValue = (String)field.get(instance);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36959 次 |
| 最近记录: |