카테고리 없음

[자바] 이 진술은 무엇을 의미하며이 스타일이 권장됩니까?

행복을전해요 2020. 12. 22. 11:18

이를 정적 가져 오기 라고 합니다. 그 결과 현재 범위에 정의 된 것처럼 이름 outexit프로그램에서 이름을 사용할 수 있습니다 . 그래서 당신은 exit(0)대신 쓸 수 있습니다 System.exit(0).

이제 좋은 생각입니까? 가끔씩 사용하면 어수선 함을 줄이는 좋은 방법입니다. 그러나 대부분의 경우 실제로 코드를 이해하기 어렵게 만듭니다. 독자는 "어디에 out정의되어 있습니까?"라고 물을 것입니다. 그리고 "어디 exit()에서 오는가?" 일반적으로이를 피해야합니다.

그러나 SomeReallyLongName객체 처리에 관한 모든 클래스를 작성 하고를 SomeReallyLongName정의하는 경우 FINAL_CONSTANTS정적 가져 오기를 사용하여 가져 오면 많은 타이핑과 많은 혼란을 줄일 수 있으며 이러한 상수의 출처가 명확해질 것입니다.

-------------------

정적 수입품입니다. 그것은 당신이 같은 일을 수행 할 수 있습니다 exit(0)대신 System.exit(0).

잘 알려진 Java 클래스에 대해서는 이것을 권장하지 않습니다. 일부 사람들에게는 혼동을 줄 수 있기 때문입니다. 그러나 때로는 Guava 와 같은 유틸리티 클래스에 유용합니다 .

Iterables.filter(list, SomeClass.class)

매우 장황하지만 정적 가져 오기로 더 쉽게 읽을 수 있습니다. filter(list, SomeClass.class)

팀과 함께 코드 지침이 무엇인지 확인하고 일관성을 유지해야합니다.

-------------------

예, 완벽하게 괜찮습니다.

이것은 알려진 static import.This 멤버가 같은 클래스에 정의 된 허용 static하고 public필드가 정의 된 클래스를 특정하지 않고 사용한다. 이 기능은 J2SE 5.0. 예 :

import static java.lang.Math.*;
import static java.lang.System.out; 
// in main
out.print( max(100,200) ); // prints 200.You didn't have to use Math.max(.,.) 

정적 가져 오기를 사용하면 코드를 읽기가 어렵 기 때문에 좋은 생각이 아닐 수 있습니다.

-------------------

예, 이러한 진술은라고하며 static imports완벽하게 유효합니다. 상기 살펴보세요 고정 수입에 javase 가이드 자세한 정보를.

사용법과 관련하여 가이드는 다음과 같이 말합니다.

그렇다면 언제 정적 가져 오기를 사용해야합니까? 아주 드물게! 상수의 로컬 복사본을 선언하거나 상속 (상수 인터페이스 안티 패턴)을 남용하려는 경우에만 사용하십시오. 즉, 하나 또는 두 개의 클래스에서 정적 멤버에 자주 액세스해야 할 때 사용하십시오. 정적 가져 오기 기능을 과도하게 사용하면 프로그램을 읽을 수없고 유지 관리 할 수 ​​없게되어 가져 오는 모든 정적 멤버로 네임 스페이스를 오염시킬 수 있습니다. 코드를 작성한 후 몇 달이 지난 코드 독자는 정적 멤버가 어떤 클래스에서 왔는지 알 수 없습니다. 클래스에서 모든 정적 멤버를 가져 오는 것은 특히 가독성에 해로울 수 있습니다. 하나 또는 두 개의 구성원 만 필요한 경우 개별적으로 가져옵니다. 적절하게 사용하면 정적 가져 오기를 사용하면 프로그램을 더 쉽게 읽을 수 있습니다.

-------------------

정적 가져 오기는 Java 1.5에 추가 된 새로운 기능입니다.

정적 가져 오기 구문을 사용하면 정적 멤버를 포함하는 형식에서 상속하지 않고도 정적 멤버에 대한 정규화되지 않은 액세스를 허용합니다. 대신 프로그램은 멤버를 개별적으로 가져옵니다.

당신은 쉽게 액세스를 원한다면 아무것도 잘못은 예와 함께이 out하고 exit그래서 당신이로 직접 호출 할 수 있습니다 out.println()예를 들어. 어떤 사람들은 그것이 "혼란스럽고"어디에서 out왔는지 알아 내기가 어렵다고 주장 할 수도 있지만, 어떤 최신 IDE가 그것을 알아내는 데 도움을 줄 수 있지만 그것에 대해 구문 적으로나 스타일 측면에서 잘못된 것은 없습니다 .

-------------------

다음은 여기에 하나의 기능 가져 정적 수입 concept.These 간단 수입하지만 concept.See의 다른 유형을 가진처럼되어 종료 () 하나 개의 필드 밖으로 둘 다 (경우에 모두 여기 SYSTEN 자신의 클래스) 자신의 해당 클래스에 정적이다. System.out.println () 을 작성하는 대신 간단히 out.println ()을 작성할 수 있습니다. 마찬가지로 System.exit () 대신 exit ()를 작성할 수 있습니다 .



출처
https://stackoverflow.com/questions/7420053