Java 패키지 가져오기(import)
패키지 가져오기 – import 명령
import pname.clazz;
import pname.*;
pname: 패키지 이름
clazz: 클래스 이름
패키지를 포함한 클래스명을 FQN(fully qualified name)이라고 한다. 원래 클래스를 선언하기 위해서는 FQN으로 작성하지 해야 한다. 그러나, com.devkuma.tutorial.basic.Animal
과 같은 이름을 매번 설명하는 것은 번거롭다.
그래서, 미리 사용할 패키지를 임포트(import
)을 선언하여, 코드내에서는 패키지를 생략하고 작성할 수 있게 된다. import
명령은 일반적으로 package
선언을 한 후에 바로 작성한다.
예를 들어, 다음은 같은 방식이다.
package com.devkuma.basic.imports;
import com.devkuma.tutorial.basic.Animal;
// ... 중간 생략 ...
Animal a = new Animal();
import
선언이 없다면, 아래와 같이 작성을 해야 한다.
com.devkuma.tutorial.basic.Animal a = new com.devkuma.tutorial.basic.Animal();
com.devkuma.tutorial.basic
패키지 아래의 모든 클래스를 함께 가져오고 싶다면 다음과 같이 작성할 수도 있다.
import com.devkuma.tutorial.basic.*;
import
선언은 이름을 선언한다는 의미밖에 없기 때문에, *
사용했다고 하여 패키지 전체를 import
하여 가져와서 앱이 비대화했다고 하는 일은 일어나지 않는다. 다만, 최근에는 코드내에서 이용하고 있는 클래스를 명확하게 한다고 하는 의미로 가능한 한 *
(on-demand import)는 이용하지 않는 것이 관례적이다.
Note
java.lang
패키지는 자주 이용한다고 하는 특징상, 자동적으로 임포트 된다. 명시적으로 import
를 선언할 필요는 없다.
import static 명령 - 클래스 메소드/필드 가져오기 –
import static pname.clazz.member;
import static pname.clazz.*;
pname: 패키지 이름
clazz: 클래스 이름
member: 회원 이름
import static
명령를 사용하여 클래스의 멤버를 클래스 이름을 지정하지 않고 호출할 수도 있다.
예를 들어, 다음은 java.lang.Math
클래스의 abs
메소드에서 절대값을 구하는 예이다. 호출할 때, Math.~
와 같은 작성하지 않아도 된다.
package com.devkuma.basic.imports;
import static java.lang.Math.*;
public class ClassStaticImport {
public static void main(String[] args) {
System.out.println(abs(-10)); // 결과: 10
}
}
일반적인 클래스의 임포트와 같이 멤버명까지를 명시하는 것도 가능하다. 위에 같은 경우라면 다음과 같이 import static
명령을 호출해도 같은 의미이다.
import static java.lang.Math.abs