다음과 같은 코드가 있다고 가정합니다.
import java.util.Date;
import my.own.Date;
class Test{
public static void main(String [] args){
// I want to choose my.own.Date here. How?
..
// I want to choose util.Date here. How ?
}
}
정규화 된 클래스 이름이어야합니까? 수입 명세서를 제거 할 수 있습니까? 이러한 시나리오가 실제 프로그래밍에서 일반적입니까?
답변
import 문을 생략하고 전체 경로를 사용하여 참조 할 수 있습니다. 예 :
java.util.Date javaDate = new java.util.Date()
my.own.Date myDate = new my.own.Date();
그러나 나는 같은 이름과 비슷한 기능을 가진 두 개의 클래스를 사용하는 것은 당신이 어떤 것이 무엇인지 정말로 명확하게 할 수 없다면 일반적으로 최선의 생각이 아니라고 말할 것입니다.
답변
클래스를 가져 오는 대신 정규화 된 이름을 사용하십시오.
예 :
//import java.util.Date; //delete this
//import my.own.Date;
class Test{
public static void main(String [] args){
// I want to choose my.own.Date here. How?
my.own.Date myDate = new my.own.Date();
// I want to choose util.Date here. How ?
java.util.Date javaDate = new java.util.Date();
}
}
답변
예. 동일한 단순 이름을 가진 클래스를 가져올 때 정규화 된 클래스 이름으로 참조해야합니다. 다른 개발자가 작업 할 때 파일에 무엇이 있는지 알 수 있도록 import 문을 그대로 둡니다.
java.util.Data date1 = new java.util.Date();
my.own.Date date2 = new my.own.Date();
답변
이를 수행하는 또 다른 방법은 하위 클래스를 만드는 것입니다.
package my.own;
public class FQNDate extends Date {
}
그런 다음 java.util.Date가있는 패키지에서 my.own.FQNDate를 가져옵니다.
답변
고유 한 날짜 클래스가있는 경우 기본 제공 날짜 클래스와 구별해야합니다. 즉, 왜 자신을 만들었습니까? ImmutableDate 또는 BetterDate 또는 NanoDate와 같은 것, 심지어 MyDate도 자신의 날짜 클래스가있는 이유를 나타냅니다. 이 경우 고유 한 이름을 갖게됩니다.
답변
가져 오기를 사용하여 그중 하나를 가져올 수 있습니다. 다른 모든 유사한 클래스의 경우 정규화 된 클래스 이름을 지정해야합니다. 그렇지 않으면 컴파일 오류가 발생합니다.
예 :
import java.util.Date;
class Test{
public static void main(String [] args){
// your own date
my.own.Date myOwndate ;
// util.Date
Date utilDate;
}
}
답변
이 시나리오는 실제 프로그래밍에서 흔하지는 않지만 그렇게 이상하지는 않습니다. 때로는 서로 다른 패키지의 두 클래스가 같은 이름을 가지며 둘 다 필요합니다.
두 클래스의 이름이 같은 경우 둘 다 동일한 기능을 포함해야하며 둘 중 하나만 선택해야하는 것은 아닙니다.
둘 다 필요하다면 그것을 사용하는 데 아무런 해가 없습니다. 그리고 그것은 나쁜 프로그래밍 아이디어도 아닙니다.
그러나 우리가 참조하는 클래스를 명확히하기 위해 클래스의 정규화 된 이름 (같은 이름을 가진)을 사용해야합니다.
🙂