假设我有一个班级:
public class SomeClass {
public NotPresent1 method1(NotPresent2 input) {return null;}
public void method2() {}
}
我编译了这个类但是在运行时,NotPresent1和/或NotPresent2不在类路径上。我能加载那个班吗?我可以实例化这样的类并调用method2()
吗?或者我甚至可以打电话给method1(null)
?
答案 0 :(得分:1)
AFAIK未指定/取决于VM / JIT实现。我知道当前VM尽可能晚地加载类(当调用该类的代码/进行状态访问时)。为了加快Fat Clients(Swing)的启动时间,这已经完成了~1.3左右。然而,可能会发生激进的优化JIT提前加载它们(例如,优化服务器端性能)。 不要依赖当前关于类加载时序的行为。