2011-11-02 27 views
4

我有一个类有相当数量的静态变量,并不是所有的都被初始化为它们的默认值(例如,我有一个布尔值,我初始化为true ,Set I初始化为新的Set()等)。这个类有点像一个控制器,可以在其他类上运行。在完成对一个类的操作之后,我想使用(如果存在的话)将它的所有静态变量重新初始化为它们的原始值,这是Java API的一部分,因此我不必制作“reinitializeClassVariables ()“方法,其中大约有十几个变量,每当我对类中声明的静态变量进行任何更改时都需要更新。有任何想法吗?重新初始化一个类的静态变量到它们的原始值java

+1

据我所知,不幸的是没有任何Java API支持重新初始化变量。你必须自己做。 – Naved

回答

2

不,没有内置。您可以使用反射或字节码操作来完成某些操作,但这并不值得,而且会让这一切变得更加复杂。也许你可以将静态变量重构成一个新类,然后在“完成时”重置一个新实例。

7

它做一个类工作后,我想所有的静态变量的初始化到其原始值

认真听起来像是你将与实例更好变量。然后,您可以使用new创建一个新类的实例(或包含您的参数的类),并且所有变量都将初始化为其初始值。事情是这样的:

// All parameters (static if you so like) 
static ControlParams controlParams = new ControlParams(); 

... 

// Reset parameters 
controlParams = new ControlParams(); 


东西是在Java API的一部分,让我没有做出reinitializeClassVariables()

没有, API中没有这样的东西(实际上,它必须是我相信的语言规范的一部分)。在你的用例中使用静态变量是一个非常糟糕的选择。

+2

同意。绝对需要做出这些实例变量。这与静态的东西没有任何意义。 –

+0

如果它是可变的,那么静态可能没有意义。 (+1) –

+0

确实。我只是认为,因为他的变量最初是静态的,所以如果'controlParams'不是静态的,他会进行更多的重构。 :-) – aioobe