首页 > 解决方案 > 将 String 转换为使用反射获得的值

问题描述

所以我得到一个值,我知道它是来自另一个使用反射的类的字符串,但是当我尝试将 (String) 转换为它时,会抛出 ClassCastException,因为 String 无法转换为字段。有人能帮我吗?

public static void main(String[] args) throws NoSuchFieldException {
    Utils utils = new Utils();
    Field field = utils.getClass().getDeclaredField("myString");
    field.setAccessible(true);
    String myString = (String) field;
}

标签: javareflectionjava-8

解决方案


所以,field是 的一个对象java.lang.reflect.Field。所以你不能把它转换成字符串。您需要从中获取字符串对象utils。为此,您应该使用Field#get()object(在您的情况下它将是utils)作为参数的方法。

String myString = (String) field.get(utils);

推荐阅读