私はJavaを完全に新しくして、Javaコンパイラが別のクラスのあるクラスのオブジェクトを作成する方法について疑問を投げかけました。例えば:私はmainメソッドを持つクラスB持つJavaコンパイルによって、あるクラスのオブジェクトが別のクラスに作成される方法は?
class A{}
:
私は以下のようにクラスAを持っている。ここ
class B {
public static void main(String[] args){
A a = new A();
System.out.println(a);
}
}
は質問です:私は1つの別個txtファイルにクラスAを書きましたクラスBは別のtxtファイルにあります。私が "クラスB"をコンパイルするときクラスBのクラスAのトレースがないので、コンパイラが "クラスA"が存在することをコンパイラがどのように知っているか。クラスAのパスを与えず、クラスAが存在するという手がかりを与えていない。しかし、JavaコンパイラがクラスBのクラスAのオブジェクトを認識して作成する方法は、これは愚かな質問かもしれませんが、答えなしでさらに進めることはできません。前もって感謝します。
Javaコンパイラは、実際にこれらのファイルを見つけるためにあなたのハードドライブに見えます。 '-classpath'オプションを使って手作業で探すパスを設定することができます。 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html – markspace
コンパイラはオブジェクトを作成せず、コンパイル時にそのクラスの参照タイプの互換性と可用性を確認するだけです(ここではclass B級のA)。したがって、クラスローダーはクラスAを最初にロードし、クラスBはクラスAがクラス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
-http://stackoverflow.com/questions/39060422/how-java-compiles-creates -objects-of-one-class-in-another-class]ありがとう.. @dkb – Javabie