2013-02-19 3 views
0

두 개의 자바 클래스 (.java 파일)가 있습니다. 매번 클래스 이름을 참조하지 않고도 다른 클래스에 정의 된 한 클래스에서 새 인스턴스를 만들 수 있기를 원합니다. C#에는 #using이 포함되어 있지만 java에서만 import <pre-compiled code>을 사용할 수 있습니다. 이 할 수있는 방법이 있나요 :Java에서 불필요한 클래스 참조를 피하는 방법은 무엇입니까?

import TestClass; 

은 다음 단순히

TestClass.TestFunction() 

때마다 사용없이 내부 함수를 호출? 모든 기능과 객체를 내 Main 클래스와 별개로 만들면됩니다.

import static TestClass.TestFunction; 
// or 
import static TestClass.*; 

다음 클래스 한정자 사용하지 않고 호출 : TestFunction 가정

+0

를 참조하십시오 우리는 두 개의 클래스는 같은 패키지에 있는지 알 필요 여부 –

+0

봐 http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html – drzymala

+1

@ RajuGujarati 아니, 정말. –

답변

5

당신은 static import를 사용할 수 TestClass의 정적 방법이 혼란으로 이어질 수

TestFunction(...); 

주/읽기 어려운 코드 - 은 정적 인 수입품을 드물게 사용합니다.

+0

클래스 이름에 "심볼을 찾을 수 없습니다."라는 오류가 표시되지만 확실히 존재합니다. 이것이 내가 혼란스러워하는 이유입니다. 나는 많은 다른 것들을 시도했지만 여전히 오류가 발생합니다. –

+0

정규화 된 클래스 이름을 가져와야합니다. 당신은 질문에 답을주지 않았기 때문에 대답에 넣지 않았습니다. 그러나 예를 들어 [Math'] (http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html)에서 모든 함수와 상수를 정적으로 가져올 수 있습니다. 그래서 :'import static java.lang.Math. *;' –

+0

이해합니다. 그러나 이것은 내가 만든 클래스입니다. 이 파일은 .java 파일이며, Main.java 프로젝트 파일과 같은 디렉토리에 있습니다. 내가 추가하는 접두어는 그것을 고쳐주는 것처럼 보이지 않습니다. –

0

netbeans를 사용하는 경우 Java 클래스를 가져 오는 동안 아무런 문제가 없습니다. 그리고 사실, 당신은 import 문으로 "사전 컴파일 된 클래스"만 가질 수 있습니다. 메모장에서 실행중인 경우 먼저 독립적 인 클래스를 컴파일 한 다음 종속 클래스를 컴파일해야합니다. 당신이 다음 넷빈즈 또는 이클립스 또는 다른 IDE를 사용하는 경우 그리고 당신은 그들 자신에 의해 관리됩니다 걱정할 필요가 없습니다, 당신은 단지 당신은 수입의 두 가지 유형을 가질 수 있습니다 적절한 패키지와 클래스 이름
를 사용할 필요가

import package1.Class1; 
import static package1.Class2; 

첫 번째로 당신은 클래스 1의 객체 (또는 클래스 1에있는 경우 다른 클래스)를 만들 수 있으며 직접 클래스 명으로 그것을 참조하지 않고 Class2의의 정적 메서드를 호출 할 수 있습니다 두 번째로 방법을
를 호출

업데이트
tutorials on packages in JAVA

+0

내 프로젝트의 패키지 이름은 어떻게 구합니까? 패키지는 가져올 클래스와 가져올 클래스 모두에서 동일하기 때문에. –

+0

당신이 자바 코드 패키지 이름을 쓸 때 첫 번째 문으로 쓰여져있다. 그들이 어디에 있는지 자바 코드를 보라.'package p1;'이 종류의 뭔가가 자바 코드의 시작 부분에 나타날 것이다. 이 문장이 없으면 _default_ 패키지에 클래스가 있습니다. 그럴 수 없어 (나쁜 습관) – asifsid88

관련 문제