2011-11-02 2 views
4

상당수의 정적 변수를 가진 클래스가 있습니다. 모든 클래스가 기본값으로 초기화되지는 않습니다 (예 : 부울 값이 true로 초기화됩니다. , Set은 새로운 Set() 등으로 초기화됩니다. 이 클래스는 다른 클래스에서 작동하는 컨트롤러와 다소 비슷합니다. 클래스에 대한 작업이 끝나면 모든 정적 변수를 원래 값으로 다시 초기화하고 (있는 경우) Java API의 일부분을 사용하여 "reinitializeClassVariables() "메서드를 사용하여 클래스에 선언 된 정적 변수를 변경할 때마다 업데이트해야하는 약 12 ​​개의 변수가 있습니다. 어떤 아이디어? 이 클래스에서 작동을 끝낼 후클래스의 정적 변수를 원래 값으로 다시 초기화하십시오. java

+1

내 지식에 따르면 불행히도 변수를 다시 초기화하는 Java API는 지원하지 않습니다. 너 혼자해야 해. – Naved

답변

2

아니오, 빌드 인이 없습니다. 리플렉션이나 바이트 코드 조작으로 무언가를 할 수는 있지만, 가치가있는 것은 아니며 모든 것을 더 복잡하게 만듭니다. 어쩌면 정적 변수를 새 클래스로 리팩터링 한 다음 "완료되면"새 인스턴스로 재설정 할 수 있습니다.

7

, 내가 원래 값으로 정적 모든 변수를 다시 초기화하고 싶습니다

진심으로 당신이 인스턴스의 더 나은 것 같은데 개의 변수. 그런 다음 new을 사용하여 클래스의 새 인스턴스 (또는 매개 변수를 포함하는 클래스)를 만들면 모든 변수가 초기 값으로 초기화됩니다. 이런 식으로 뭔가 : 나는 reinitializeClassVariables()

없음 필요가 없습니다 있도록 자바 API의 일부

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

... 

// Reset parameters 
controlParams = new ControlParams(); 


뭔가, API에는 그러한 것이 없습니다 (사실, 제가 믿는 언어 사양의 일부 여야합니다). 정적 변수의 사용은 단순히 유스 케이스에서 실제로 나쁜 선택입니다.

+2

동의. 확실히 이러한 인스턴스 변수를 만들어야합니다. 이것은 정적 인 것으로는 이해가되지 않습니다. –

+0

가변적 인 경우 정적 일 가능성이 크지 않습니다. (+1) –

+0

참. 필자는 변수가 원래 정적이기 때문에 'controlParams'가 정적이지 않으면 리팩토링에 더 집중할 것이라고 생각했습니다. :-) – aioobe

관련 문제