2016-08-21 2 views
0

저는 완전히 Java에 익숙하지 않습니다. 그리고 Java 컴파일러가 다른 클래스에서 한 클래스의 객체를 만드는 방법에 대한 질문을 보았습니다. 예를 들면 : 나는 주요 방법으로 클래스 B가자바 컴파일은 다른 클래스의 한 클래스의 객체를 어떻게 생성합니까?

class A{} 

:

나는 다음과 같이 클래스 A가 여기에

class B { 

    public static void main(String[] args){ 

     A a = new A(); 

     System.out.println(a); 

    } 

} 

는 질문 : 나는 한 별도의 txt 파일에 클래스 A를 썼다 다른 txt 파일에 클래스 B가 있습니다. 컴파일 할 때 "클래스 B"컴파일러는 클래스 A의 경로가 없기 때문에 "클래스 A"가 존재한다는 것을 어떻게 알 수 있습니까? 클래스 A의 경로는 제공하지 않으며 클래스 A가 존재한다는 단서를 제공하지 않습니다. 하지만 자바 컴파일러가 B 클래스의 클래스 A에 대한 객체를 알고 작성하는 방법은 바보 같은 질문 일 수 있지만 대답 없이는 더 이상 진행할 수 없습니다. 미리 감사드립니다.

+0

자바 컴파일러는 실제로 이러한 파일을 찾기 위해 하드 드라이브에 보인다. '-classpath' 옵션을 사용하여 수동으로 찾는 경로를 설정할 수 있습니다. http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html – markspace

+0

컴파일러는 객체를 생성하지 않으며 컴파일 할 때 참조 유형 호환성 및 해당 클래스의 가용성을 확인합니다 (여기 클래스 A 클래스 B). 클래스 로더는 먼저 클래스 A를로드 한 다음 클래스 B는 클래스 A에 종속되므로 클래스 B를로드합니다. 객체 생성은 런타임에 수행됩니다. 컴파일 타임과 런타임 액션을 별도로 이해한다면 대부분의 의심은 해결 될 것입니다. ref : http://stackoverflow.com/questions/20796046/flow-of-class-loading-for-a-simple-program, http : // www.javaworld.com/article/2077260/learn-java/learn-java-the-basics-of-java-class-loaders.html – dkb

+0

-http : //stackoverflow.com/questions/39060422/how-java-compiles-creates -objects-of-one-class-in-another-class] 감사합니다. @dkb – Javabie

답변

1

클래스가 동일한 패키지에 있으면 컴파일러에서 자동으로 찾습니다. 그렇지 않으면 "가져 오기"표현식을 추가해야합니다. 예를 들어 import example.classA;

+0

감사합니다 .. Julieta ... – Javabie

0

두 가지 주요 부분 인 "개체 만들기"및 "해당 개체에 대한 참조 만들기"가 있습니다.
컴파일러가 참조 부분 만 검사합니다. 즉, 참조 유형을 확인합니다 (유형이 A 클래스 임). 오브젝트가 작성되었는지 여부는 상관 없습니다.
java 파일을 컴파일 할 때 .class 파일을 만들고 컴파일러는 로컬 디스크에서 클래스 파일을 찾고 읽는 방법을 알고 있습니다.

+0

[http://stackoverflow.com/questions/39060422/how-java-compiles-creates-objects-of-one-class-in-another-class] 감사합니다. @Lashitha Yapa – Javabie

0

Java 언어로 작성된 소스 파일은 javac 도구를 사용하여 .class 파일로 컴파일됩니다.

은 javac의 실행하는 데 필요한 두 가지가 있습니다 : 소스 파일의

1) 목록 2를 컴파일) 경로의 목록을 하드 드라이브에 어디 다른의 .class 또는 된 .java (또는 항아리) 파일은 소스 코드에서 참조 할 수 있습니다. 이 경로 목록을 클래스 경로라고합니다.

javac를 호출 할 때 클래스 경로 인수를 지정하지 않으면 javac는 현재 디렉토리를 사용하여 .java 또는 .class 파일을 지원합니다 (CLASSPATH라는 환경 변수가있는 경우이 디렉토리도 나타납니다).

예를 들어, javac가 ClassA를 컴파일하면 클래스 B에 의존하고 ClassA와 동일한 디렉토리에서 ClassB.java를 찾으려고 시도합니다.

IDE를 사용하여 컴파일하는 경우 IDE는 javac가 실행해야하는 인수를 채 웁니다.

현재 javac의에 대한 자세한 내용을보실 수 있습니다이 : http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html

+0

감사합니다. 너 @jrahhali – Javabie

관련 문제