Ho alcune domande su Java Compiler.Ho alcune domande sul compilatore Java
La mia directory corrente è come questa.
├── Hoge.java
├── Sample.class
├── Sample.java
├── pattern01
│ └── com
│ └── cat
│ └── Hoge.class
└── pattern02
└── com
└── cat
└── Hoge.class
----- ----- Sample.java
import com.cat.Hoge;
public class Sample {
public static void main(String[] args) {
System.out.println("hello!");
Hoge h = new Hoge();
h.call();
}
}
----- ----- pattern01
package com.cat;
public class Hoge {
public void call() {
System.out.println("com.cat");
System.out.println("pattern01");
}
}
----- pattern02 -----
package com.cat;
public class Hoge {
public void call() {
System.out.println("com.cat");
System.out.println("pattern02");
}
}
Ho compilato Sample.java in questo modo.
$ javac -cp pattern01 Sample.java
E l'eseguo in questo modo.
$ java -cp .:pattern01 Sample
hello!
com.cat
pattern01
$ java -cp .:pattern02 Sample
hello!
com.cat
pattern02
Sia pattern01 che pattern02 sono normalmente terminati.
Ma ho compilato con pattern01. Perché il programma termina normalmente con pattern02?
Cosa controlla il compilatore? Il compilatore controlla solo il nome della classe?