만약 import 한 패키지 안에 같은 이름의 클래스가 존재하고 이 클래스를 사용하고 싶다면 어떤 문제가 발생할까? 아래 코드는 import 하고 있는 두개의 패키지에 클래스 B가 존재하는 경우에 어떤 일이 발생하는가를 보여준다.
package org.opentutorials.javatutorials.packages.example3; import org.opentutorials.javatutorials.packages.example1.*; import org.opentutorials.javatutorials.packages.example2.*; public class D { public static void main(String[] args) { B b = new B(); } }
위의 코드는 아래와 같은 오류를 발생한다.
Exception in thread "main" java.lang.Error: Unresolved compilation problems: The type B is ambiguous The type B is ambiguous at org.opentutorials.javatutorials.packages.example3.D.main(D.java:8)
클래스 B의 이름이 중복되기 때문에 애매함(ambiguous)의 문제가 발생한다. 아래와 같은 방법으로 이 문제를 우회할 수 있다.
package org.opentutorials.javatutorials.packages.example3; import org.opentutorials.javatutorials.packages.example1.*; import org.opentutorials.javatutorials.packages.example2.*; public class D { public static void main(String[] args) { org.opentutorials.javatutorials.packages.example2.B b = new org.opentutorials.javatutorials.packages.example2.B(); } }