commons.pool 글을 읽어보다가
http://cafe.naver.com/itinsuccess.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=43
에서
//스테틱 영역에서 xml파일에 저장되어 있는 데이터 베이스 정보를 가지고 온다.
static{
HashMap dbInfo = UtilStr.getXmlMessage(xmlChildernKey, xmlFilePath);
driverClassName = String.valueOf(dbInfo.get("driverClassName")).trim();
url = String.valueOf(dbInfo.get("url")).trim();
userName = String.valueOf(dbInfo.get("userName")).trim();
password = String.valueOf(dbInfo.get("password")).trim();
maxActive = Integer.parseInt(String.valueOf(dbInfo.get("maxActive")).trim());
maxWait = Long.parseLong(String.valueOf(dbInfo.get("maxWait")).trim());
maxIdle = Integer.parseInt(String.valueOf(dbInfo.get("maxIdle")).trim());
defaultReadOnly = Boolean.parseBoolean(String.valueOf(dbInfo.get("defaultReadOnly")).trim());
defaultAutoCommit = Boolean.parseBoolean(String.valueOf(dbInfo.get("defaultAutoCommit")).trim());
connectionFlg = false;
}
이런식으로 변수를 선언한것 을 보았다.
static{}로 묶은건데 이렇게 할경우 장점은 뭘가?
가독성이 좋은건가?
저게 실제로 각 변수에 static를 붙은 효과만 내는걸가?
public 나 pravite 를 선언하려면 어떻게 해야한는걸까?
-------------------
출처 : http://okjsp.pe.kr/seq/118099
옥희의 답변 중에
driverClassName 값을 받아오는 과정에서
static으로 선언된 dbInfo 에서 값을 받아오고 있기때문에
static 하에서 실행되어야 할 필요가 있습니다.
그래서 그 과정을 한번에 static 으로 묶은게 아닐까요?
-------------------
말이 있다
그래서 테스트해봣다
private static final String driverClassName;
를 선언하고
driverClassName = "하하"; 를 다른 메쏘드에서 실행하려 했지만 안됐다
그러나
static{} 영역에서 선언을 하니 된다.
---------------------
추가 수정 :
private static final String driverClassName;
static{
String a = "1";
driverClassName = a;
}
다음의 코드를 보면
static 는 메모리가 클래스가 최초로 불러질때 실행이되고
a는 전역변수가 아니게 된다.
흠 한마디로 초기에만 쓰이는 프로그램이 되는 형태.
생성자랑 비슷하면서도 비슷하지 않은 형태가 되겠다.
'개인적인 프로그램 > JAVA/JSP' 카테고리의 다른 글
request 라인단위로 읽기 (0) | 2011.10.26 |
---|---|
java 썸네일 thumbnail (0) | 2011.10.26 |
javascript로 동영상을 목록으로 재생하는 방법에 대해서. (0) | 2011.10.26 |
CalendarUtil을 만들면서.. (0) | 2011.10.26 |
util을 만들면서... (0) | 2011.10.26 |