Tag Archives: java

[번역] Java Static Import

14/06/2008
http://javapapers.com/core-java/what-is-a-static-import-in-java/

먼저 자바 프로그램에서 “import”구문을 왜 사용하는지부터 살펴보자

아래의 import 문장을 보자:

(1)번 문장을 사용하면 ClassA를 프로그램 전체에서 패키지를 참조하지 않고도 사용할 수 있다. 다시 말해 ClassA obj = new ClassA(); 나 ClassA.getStatic();와 같이 사용할 수 있게 된다. (2)번 문장을 사용하면 해당 package 하위에 속하는 자바 클래스를 동일한 방식으로 모두 사용할 수 있다. 즉 패키지 참조가 필요없다.

import 구문을 사용하지 않더라도 해당 패키지에 있는 클래스를 사용할 수는 있다. 하지만 클래스를 사용하려면 패키지 참조를 앞에 붙여서 호출해야만 한다.

다시 말해 package.ClassA obj = new package.ClassA();처럼 사용해야 한다. 너무 지저분하지 않은가?

이제 static import문을 살펴보자. 위의 지저분한 문장과 마찬가지로, 우리는 자바의 static 기능을 자신도 모르게 사용하고(남용하고) 있다.

다음 예제를 보자:

이제 이 코드를 다음과 같이 작성해 보자:

더 읽기 쉽지 않은가?

자바의 static import 구문은 바로 이러한 부분에서 쓸모가 있다.

이와 같이 static import 구문을 사용하면, 좀 더 읽기 쉽게 코드를 작성할 수 있다.

Java Static Import

일반적인 import 구문을 사용하면 패키지로부터 클래스를 임포트하고, 이를 통해 패키지 참조를 사용하지 않고도 해당 클래스를 사용할 수 있게 된다. 마찬가지로 static import 구문을 사용하면 클래스의 static 멤버들을 임포트하고 되고, 이를 통해 클래스 참조 없이도 해당 static 멤버를 사용할 수 있게 된다.

자바 1.5에서는 이러한 static import 구문이 완벽해졌다. static import 구문을 어디까지 사용할 수 있는지 한번 보자.

static import로 static 멤버를 모두 임포트할 수 있나?

그렇다. 예를 들어

와 같이 사용할 수 있다. 다시 말해 클래스를 임포트할 수 있다.

하지만 이렇게는 사용하지 말기를 바란다. 시간이 지나면서 자바 프로그램에서 사용한 static 메서드나 static 필드가 어느 클래스에 속하는지 알 수 없게 되버리기 때문이다. 결국에는 프로그램을 읽기가 어려워지게 된다.

static imprt 구문에 대한 일반적인 가이드라인은 다음과 같다:

  • 1) static import 구문을 사용해서 상수를 사용할 때, 지역 변수에 담아라.
  • 2) 단, static 멤버를 하나 이상의 클래스에서 자주 접근해야 하는 경우에만.

 

백기선 선생님 스프링 교육 후기

whiteship_spring_study

그림. 백기선님의 스프링 교육을 받고 나서

이전 직장에서 스프링(Spring) 교육을 받을 때의 글인 듯 하다. 무언가를 배운다는 자체에 즐거울 수 있었던 때였던 듯. 이때는 그것이 무엇이던, 끝나면 회고(retrospective)를 통해 좋은 점과 반성할 점을 정리하곤 했었는데..

 

2010년 9월 6일(월요일) ~ 9월 9일(수요일) 3일간 CoE Specialist를 대상으로 스프링 3 교육이 있었습니다.

강사님은 백기선 선생님으로, “토비의 스프링 3”을 집필한 토비님 수제자라고 합니다.
강의는 이론 교육과 실습을 병행하여 진행되었습니다.
몇몇 강의는 익숙한 내용이라 지겹기도 했고,
몇몇 실습은 1000타/sec 선생님의 타이핑으로 인해 따라가지 못하기도 했습니다.

하지만 백선생님의 열혈 강의는 매우 훌륭했으며
스프링의 동작원리와 철학 그리고 API 사용에 대해 많이 배울 수 있었습니다.
특히 AOP 강의가 가장 멋졌습니다.

그리고 젊은 나이에도 높은 기술지식을 겸비한 백선생님을 보면서
매너리즘에 빠져있던 저희들에게 좋은 경험이 되기도 했습니다.

아래는 회고 내용입니다.

<좋았던 점>

  • 하루가 빨리 가는 듯 *
  • 아이스크림 가위 바위 보 *
  • 마지막 실습이 박진감 있었다 **
  • 친절한 강사님의 설명 **
  • AOP 강의가 훌륭했음 ******
  • @MVC *
  • 3일간 스프링과 구조에 대해 알 수 있는 알찬 교육이었음 ********
  • 수고 많으셨습니다 *
  • 다양한 실습 **
  • Spring MVC에 대한 자세한 설명이 좋았음 *
  • EL *
  • 이론과 실습이 병행되어 좋았음 **
  • OOP *
  • 점진적 개발 실습(리팩토링) **
  • DI 개념파악에 도움이 됨 *
  • 예시를 통한 접근으로 Spring IoC, DI 근본원리를 이해할 수 있었음 **
  • 동영상 코딩 과정 *

<부족한 점>

  • 이론교육과 실습교육 시간 배분이 잘 되었으면 *****
  • 쉬는 시간을 짧게 자주 가져서 강의 시간이 잘 지켜졌으면 ***
  • 강의 중간 주간 회고가 부족 *
  • 백선생님 실습속도가 많이 빨라요 *******
  • 가위바위보 졌다 – 원종인 – *
  • 너무 많은 API를 소개 **
  • 교육기간이 너무 짧아서 아쉽다 **
  • 현장상황에 맞는 질의 응답시간을 가졌으면 *
  • Spring 3.0에 대한 확실한 비교 및 설명이 있었으면 **
  • 피곤하다 *
  • 클래스 이름이 너무 어렵다 8
  • 강의내용이 많은데, 강의는 오전에 했으면..오후는 졸리니 실습 위주로 **
  • 진행 중인 강의가 교재의 어느 부분인지 알려주시면 catch up 하기 좋을 듯 *
  • 마지막 실습 따라가기 힘들었다 *
  • 진행을 좀 더 빠르게 해주세요 – 김판기 – *
  • 강의실 좌석배치가 안습 *
  • 강의 동영상에는 단축키가 나타나지 않아, 순식간에 바뀌는 코드를 따라가기 힘들다 *