Java에서 패키지(패키지)는 클래스, 인터페이스 및 서브 패키지를 논리적으로 그룹화하는 데 사용됩니다. 이는 큰 프로젝트를 구조화하고 가독성을 향상시키며 코드의 재사용성을 높이는 데 도움이 됩니다.
패키지의 주요 기능:
패키지 생성 및 사용:
package com.example.utils; public class MathUtils { public static int sum(int a, int b) { return a + b; } }
다른 패키지의 클래스를 사용하려면:
import com.example.utils.MathUtils; public class Test { public static void main(String[] args) { System.out.println(MathUtils.sum(5, 7)); } }
Java 클래스 파일 중간에 패키지를 정의할 수 있습니까? 또는 첫 번째 줄이 아닙니까?
답변: 아니오, package 지시는 Java 소스 파일의 첫 번째(빈 값이 아닌) 줄이어야 합니다.
// 잘못됨! import java.util.*; package com.example; // 컴파일 오류 public class MyClass {}
이야기
실제 프로젝트에서 파일의 시작 부분에
package지시어를 누락했습니다. 컴파일 후 클래스가 기본 패키지에 있게 되어, 다른 라이브러리의 동일 이름 클래스를 사용하게 되어 타입화 오류와 JAR 파일 빌드 문제를 초래했습니다.
이야기
대규모 팀에서 여러 패키지(com.example와 com.Example 등)를 작업할 때 Linux와 Windows 간의 호환성 문제로 인해 Windows는 경로의 대소문자를 무시하지만 Linux는 그렇지 않아 Linux 서버에 배포한 후 프로덕션에서 예기치 않은 오류가 발생했습니다.
이야기
개발자가 중요한 메소드를
protected접근으로 설정했는데, 외부에서 접근할 수 없다고 생각했지만, 같은 패키지 내의 클래스들이 이 멤버에 접근할 수 있다는 것을 고려하지 않았습니다. 이는 외부 사용을 위한 것이 아닌 API를 통해 내부 비즈니스 로직의 유출을 초래했습니다.