Как получить все имена классов для .java-файла с использованием отражения.Отражение Java для получения нескольких классов
Когда я запускаю следующий код, он распечатывает только лодку. Я попытался сделать массив классов, таких как:
Class c[] = Class.forName("boat.Boat")
, но это приводит к синтаксической ошибке
public class Reflection {
public static void main(String[] args) {
try {
Class c = Class.forName("boat.Boat");
System.out.println(c.getSimpleName());
} catch(Exception e) {
e.printStackTrace();
}
}
}
Boat.java
package boat;
public class Boat extends Vehicle {
public Boat() {}
}
class Vehicle {
public Vehicle() {
name = "";
}
private name;
}
Вы не можете, насколько я знаю, не читая исходный файл Java и разбирая его таким образом. После компиляции класса он не знает о местоположении исходного файла. Вы можете сделать некоторые образованные догадки, например, публичный класс мог бы возникнуть из исходного файла Java с похожим именем, но вы даже не можете сделать это для непубличных классов. –