[ java ] in KIDS 글 쓴 이(By): jerrykid (제리) 날 짜 (Date): 2001년 9월 6일 목요일 오전 10시 24분 29초 제 목(Title): [Q]일종의 전역변수 같은 문제.. 자바로 구현하는데 메모리에 특정 데이터를 로딩시켜 놓고 다른 클래스들이 데이터를 제한없이 사용하려면 어떻게 해야 하나요? 예를 들면, 초기화 프로세스가 데이터 처리 템플릿을 파일에서 읽어서 메모리에 가지고 있고, 서버 소켓(B)이 클라이언트(A)의 연결을 받아 데이터를 넘겨받으면 메모리에 있는 템플릿을 이용해서 처리한 뒤에 다른 서버 소켓(C)에 처리된 데이터를 넘겨주는 거죠. 초기화 프로세스가 서버소켓(B)도 준비시키죠. 이때 서버소켓(B)에서 전역변수로 데이터 처리 템플릿을 전역변수로 가지고 있어도 되겠지만, 그렇게 하면 템플릿이 변하는 경우 서버소켓을 멈추었다가 다시 시작해야 하니 문제가 될거 같거든요. 제가 원하는 것은 일단 서버 소켓으로 운용하고 있는 도중에 템플릿이 변하면 변형된 템플릿만 다시 로딩해서 사용하고자 하는 것입니다. 템플릿 로딩을 추상클래스로 해서 템플릿을 사용할 클래스에 상속시키는 것을 생각해서 테스트 해보았는데 상속받는 클래스가 실행될 때마다 템플릿 로딩(파일 I/O)을 하는 것 같더라구요. 제가 시험한 추상클래스 소스를 보시고 이것에 대한 교정이나 다른 방법이 있으면 조언바랍니다. test_b 가 추상 클래스이고 test_c에 상속됩니다. test_a가 test_c를 실행시키면서 test_b가 가진 kr_port의 값을 사용하죠. class test_a { test_a(){ test_c t_c = new test_c(); t_c.do_c(); } public static void main(String argu[]){ new test_a(); } } public abstract class test_b { public String kr_port; test_b(){ ini_file my_ini = new ini_file("test_port.ini"); String port = my_ini.get_property("port_kr"); kr_port = port; } } class test_c extends test_b { test_c(){ } public void do_c(){ String t_port = kr_port; System.out.println("port hoho : "+ t_port ); } } |