java
java static import
정적 멤버에 액세스하려면 참조를 해당 클래스에서 한정해야합니다. 예를 들어,
double r = Math.cos(Math.PI * theta);
이 문제를 해결하기 위해 정적 멤버를 인터페이스에 넣고 해당 인터페이스를 상속하는 경우가 있습니다. 이것은 나쁜 생각입니다. 사실 상상의 인터페이스 반 패턴 ( Effective Java Item 17 참조) 이라는 이름은 그다지 좋지 않습니다 . 문제는 클래스가 다른 클래스의 정적 멤버를 사용하는 것이 단순한 구현 세부 사항이라는 것입니다. 클래스가 인터페이스를 구현하면 클래스의 공용 API의 일부가됩니다. 구현 세부 사항이 공개 API에 누설되어서는 안됩니다. 정적 가져 오기 구문을 사용하면 정적 멤버 가 포함 된 유형에서 상속 하지 않고 정적 멤버 에 대한 규정 되지 않은 액세스를 허용 합니다. 대신, 프로그램 은 구성원을 개별적으로 가져옵니다 .
또는 en masse :import static java.lang.Math.PI;
정적 멤버를 가져 오면 자격없이 사용할 수 있습니다.import static java.lang.Math.*;
정적 가져 오기 선언은 일반적인 가져 오기 선언과 유사합니다. 일반 가져 오기 선언이 클래스를 패키지에서 가져와 패키지 한정없이 사용할 수 있도록 허용하는 경우 정적 가져 오기 선언은 정적 멤버를 클래스에서 가져와 클래스 한정없이 사용할 수 있도록합니다.double r = cos(PI * theta);
언제 정적 가져 오기를 사용해야합니까? 아주 조심스럽게! 그렇지 않으면 상수를 로컬 복사본을 선언하거나 상속을 남용하려는 유혹에 빠질 때만 사용하십시오 (상수 인터페이스 반 패턴). 즉, 하나 또는 두 개의 클래스에서 정적 멤버에 자주 액세스해야 할 때 사용하십시오. 정적 가져 오기 기능을 과도하게 사용하면 프로그램을 읽을 수없고 유지할 수 없도록 만들 수 있으므로 가져 오는 모든 정적 멤버로 네임 스페이스가 오염됩니다. 코드를 읽은 사람 (작성한 지 몇 개월 후)은 정적 멤버가 어떤 클래스에서 왔는지 알 수 없습니다. 가져 오기 모든 클래스의 정적 멤버의 가독성에 특히 해로울 수 있습니다; 한 명 또는 두 명의 회원이 필요한 경우 개별적으로 가져 오십시오. 적절하게 사용,
public class aa {
. . .
test.sum(1,2)
. . .
}
import static test.sum
public class aa {
. . .
sum(1,2)
. . .
}
Add java 5 version
댓글 쓰기
0 댓글