문제

다음과 같이 사용하는 경우 :

import static com.showboy.Myclass;

public class Anotherclass{}

차이점은 무엇입니까? import static com.showboy.Myclass 그리고 import com.showboy.Myclass?

도움이 되었습니까?

해결책

보다 선적 서류 비치

정적 가져 오기 선언은 일반 수입 선언과 유사합니다. 정상 가져 오기 선언이 패키지에서 클래스를 가져 와서 패키지 자격없이 사용할 수있게하는 경우, 정적 가져 오기 선언은 클래스에서 정적 멤버를 가져 와서 클래스 자격없이 사용할 수 있습니다.

그렇다면 언제 정적 가져 오기를 사용해야합니까? 매우 드물게! 그렇지 않으면 상수의 로컬 카피를 선언하거나 상속을 남용하려는 유혹을받을 때만 사용하십시오 (상수 인터페이스 antipattern). 다시 말해, 하나 또는 두 개의 클래스에서 정적 멤버에 자주 액세스해야 할 때 사용하십시오. 정적 가져 오기 기능을 과도하게 사용하는 경우 프로그램을 읽을 수없고 인재 할 수 없게 만들어 가져 오기에 네임 스페이스를 가져 오십시오. 코드의 독자 (귀하를 포함하여, 작성한 후 몇 달 동안)는 어떤 클래스 A 정적 회원이 어떤 클래스 A에서 왔는지 알지 못할 것입니다. 수업에서 모든 정적 멤버를 가져 오는 것은 특히 가독성에 해로울 수 있습니다. 하나 또는 두 명의 회원 만 필요하면 개별적으로 가져 오십시오. 적절하게 사용되는 정적 가져 오기는 클래스 이름의 반복의 상용구를 제거하여 프로그램을보다 읽기 쉽게 만들 수 있습니다.

다른 팁

당신이 말한이 두 수입품 사이에는 차이가 없습니다. 그러나 정적 가져 오기를 사용하여 다른 클래스의 정적 멤버에 대한 자격이없는 액세스를 허용 할 수 있습니다. 내가 이것을해야했던 곳 :

import org.apache.commons.lang.StringUtils;
      .
      .
      .
if (StringUtils.isBlank(aString)) {
      .
      .
      .

나는 이것을 할 수있다 :

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .
if (isBlank(aString)) {
      .
      .
      .

당신은 더 많은 것을 볼 수 있습니다 선적 서류 비치.

정적 가져 오기는 다음 대신 클래스의 정적 필드 / 방법을 가져 오는 데 사용됩니다.

package test;

import org.example.Foo;

class A {

 B b = Foo.B_INSTANCE;

}

당신은 쓸 수 있습니다 :

package test;

import static org.example.Foo.B_INSTANCE;

class A {

 B b = B_INSTANCE;

}

코드의 다른 클래스에서 상수를 자주 사용하고 정적 가져 오기가 모호하지 않은 경우에도 유용합니다.

BTW, 귀하의 예에서 "STATIC ORG.EXALLE.MYCLASS;" 작동하지 않습니다 : 가져 오기는 클래스를위한 것이고, 수업은 수업의 정적 멤버를위한 것입니다.

정적 가져 오기의 기본 아이디어는 정적 클래스, 정적 변수 또는 열거를 사용할 때마다 가져 와서 일부 타이핑에서 자신을 저장할 수 있다는 것입니다.

나는 예를 들어 내 요점을 자세히 설명 할 것이다.

import java.lang.Math;

class WithoutStaticImports {

 public static void main(String [] args) {
  System.out.println("round " + Math.round(1032.897));
  System.out.println("min " + Math.min(60,102));
 }
}

정적 가져 오기와 같은 동일한 코드 :

import static java.lang.System.out;
import static java.lang.Math.*;

class WithStaticImports {
  public static void main(String [] args) {
    out.println("round " + round(1032.897));
    out.println("min " + min(60,102));
  }
}

메모: 정적 가져 오기는 코드를 혼란스럽게 만들 수 있습니다.

"import static com.showboy.myclass"와 "import com.showboy.myclass"의 차이점?

정적 가져 오기가 필드 또는 멤버 유형 가져 오기에만 작동하므로 첫 번째는 컴파일러 오류를 생성해야합니다. (MyClass가 Showboy의 내부 클래스 또는 회원이 아니라고 가정)

나는 당신이 의미한다고 생각합니다

import static com.showboy.MyClass.*;

MyClass의 모든 정적 필드와 멤버가 실제 컴파일 장치에서 자격을 갖추지 않고도 사용할 수있게합니다.

그만큼 import Java 프로그래머가 패키지 자격없이 패키지 클래스에 액세스 할 수 있습니다.

그만큼 static import 기능을 사용하면 클래스 자격없이 클래스의 정적 멤버에 액세스 할 수 있습니다.

그만큼 import 클래스 및 인터페이스에 대한 접근성을 제공합니다 static import 수업의 정적 멤버에게 접근성을 제공합니다.

예시 :

와 함께 수입

import java.lang.System.*;    
class StaticImportExample{  
    public static void main(String args[]){  

       System.out.println("Hello");
       System.out.println("Java");  

  }   
} 

와 함께 정적 가져 오기

import static java.lang.System.*;    
class StaticImportExample{  
  public static void main(String args[]){  

   out.println("Hello");//Now no need of System.out  
   out.println("Java");  

 }   
} 

또한보십시오 : Java 5의 정적 가져 오기는 무엇입니까?

클래스 내부에 정적 필드와 메소드가 있다고 가정 해 MyClass 패키지 내부 myPackage 입력하여 직접 액세스하고 싶습니다 myStaticField 또는 myStaticMethod 매번 입력하지 않고 MyClass.myStaticField 또는 MyClass.myStaticMethod.

참고 :해야합니다 import myPackage.MyClass 또는 myPackage.*다른 리소스에 액세스하기 위해

그만큼 static 후 수정 자 import 클래스의 정적 필드를 검색/사용하는 것입니다. 내가 사용하는 한 영역 import static 수업에서 상수를 검색하는 것입니다. 우리는 또한 신청할 수 있습니다 import static 정적 방법에. 입력하십시오 import static 왜냐하면 static import 잘못되었습니다.

무엇인가요 static import Java -Javarevisited - 더 많이 알 수있는 아주 좋은 자원 import static.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top