访问时修改静态变量

And*_* T. 2 java

根据我对java的了解,我不认为这是可能的,但我想向那些知识远远超过我的人提出这个问题.

如果我有一个静态变量说,

public static String NAME = "james";
Run Code Online (Sandbox Code Playgroud)

有没有办法,通过反射或其他方式,为所述变量创建一个监听器,以便如果其他人调用:

ClassName.NAME
Run Code Online (Sandbox Code Playgroud)

它可以在得到结果之前修改,所以我可以改变NAME的值,使它等于"simon"而不是?

要清楚,这个代码库不是我自己的,我不能改变变量而是使用getter和setter.我知道这会使这更简单,但不幸的是,这不是一个选择.

Phi*_*ipp 6

不,你不能.这就是你不应该使用public变量的原因之一.始终使用privateprotected变量,并通过getter方法访问它们static public String getName().这样你就可以将任何逻辑放入你想要的getter中.