当我尝试在没有 main 方法的情况下调用 class A 中 class B 的方法时出现错误

Error appears when i try to call a method of class B in class A without main method

class B {
    void view(){
        System.out.println("in class b");
    }
}

public class A {
    
    B obj = new B();
    obj.view();
    
}

   

在 obj.view 行的这段代码中出现错误:令牌视图语法错误,此令牌后应有标识符

class B {
    void view(){
        System.out.println("in class b");
    }
}

public class A {
    {
    B obj = new B();
    obj.view();
    }
}

但是当我把这些行放在上面的块中时,那里没有出现编译时错误,但是出现了 运行 时间错误;

错误:class A 中找不到主要方法,请将主要方法定义为:public static void main(String[] args) 或 JavaFX 应用程序 class 必须扩展 javafx.application.Application

这是否意味着我不能 运行 没有 main 方法的代码?如果我需要一个主要方法那么为什么当我把它放在一个块中时 eclipse 没有显示任何错误

第一段代码失败,因为您在初始化程序块、方法或构造函数中没有 classa 中的代码。第二段代码将其放入实例初始化程序中,这就是错误消失的原因。

然而,由于 A class 是 public,我假设您此时没有任何其他 public classes,您需要一个入口点应用。这就是为什么 main 方法是必需的,否则程序无法知道从哪里开始应用程序。因此这将起作用

class B {
void view(){
    System.out.println("in class b");
    }
}

public class A {
    public static void main(String[] args) {
        B obj = new B();
        obj.view();
    }
}