import, static import, 와일드카드

방지환·2024년 5월 29일

Java

목록 보기
1/20

import

  • 클래스를 사용할 때 패키지 이름을 생략할 수 있다.
  • 컴파일러에게 클래스가 속한 패키지를 알려준다.
  • 이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지명을 붙여줘야 한다
    해당 코드에서 Date() 클래스가 sql 패키지인지 util 패키지인지 알 수 없다
    이럴땐 클래스 앞에 패키지 이름을 적어줘야한다
import java.sql.*; // java.sql.Date
import java.util.*; // java.util.Date

public class ImportTest {
    public static void main(String[] args) {
        java.util.Date today = new java.util.Date();
    }
}

import 선언 방법

import 패키지명.클래스명;
// or
import 패키지명.*;

static import

  • 코드를 짧게 만들수 있다.
  • 알아보지 못하는 경우도 생길 수 있기 때문에 필요할 때만 사용
  • static 멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다

static import 선언 방법

import static java.lang.System.out; // System.out를 out만으로 참조가능
import static java.lang.Math.*; // Math 클래스의 모든 static 멤버
// import static java.lang.Math.random; // Math.random()만, 괄호 붙이지 않는다

public class importTest {
    public static void main(String[] args) {
        // System.out.println(Math.random());
        out.println(random()); // 0.12440018531065256

        // System.out.println(Math.PI);
        out.println(PI); // 3.141592653589793
    }
}

와일드카드 사용 논점

  • 성능
  • 클린 코드

성능에 미치는 영향

  • 와일드카드는 컴파일 시간 성능이 저하
  • 와일드카드는 런타임 성능에 전혀 영향 없다

사용 지양이유

  • 와일드카드 사용 없이 import를 선언하면 명확하게 인지할 수 있어 실수를 줄일 수도 있다.
  • 다른 패키지에 동일한 클래스가 존재할 수도 있다.

결론

  • 컴파일러가 일을 하는 것이고, 바이트 코드로 비교해보면 둘다 동일한 바이트 코드를 가진다.
  • Java에서 와일드카드는 런타임 성능에 전혀 영향을 미치지 않지만 컴파일 시간 성능은 약간 영향을 받을 수 있다.
  • 클린코딩이라는 측면에서는 상황에 따라 활용해야한다.

0개의 댓글