反思:如何在没有评估的情况下获得字段的价值?

时间:2017-07-29 19:04:08

标签: java reflection

使用java.lang.reflect并且想知道是否有可能获得java.lang.reflect.Field的分配值

实施例

public class Dummy {
    String envHttpPort = System.getenv("HTTP_PORT");
}

从java反射我希望返回值System.getenv("HTTP_PORT");而不是null,因为它似乎是通过实例化类来实现的,据我所知,需要检索字段的值将是System.getenv(String)调用的值,这不是我想要的。

是否可以原样读取字段和值?

通缉输出与源代码相同。

我希望你们明白,如果不是,请告诉我,我会尝试重新解释这个问题。

1 个答案:

答案 0 :(得分:0)

不,不可能得到一个字段的“赋值”(因为你为了这个问题而任意定义了它),因为正如你已经看到的那样,它不是一个值,它是一段代码。

此代码是实例初始化的一部分,如果没有字节码操作,则无法提取它。即使它可以被提取,它也只知道如何设置特定类的特定字段的值,它不会返回任何可以使用的值。它也很可能会调用该类的其他代码来完成它的工作,所以即使你以某种方式设法隔离它,也不可能在实例的正常初始化之外执行它。

长话短说,甚至都没想到。