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

问题描述

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();
    }
}

但是当我将这些行放在上面的代码块中时,没有出现编译时错误,但出现了运行时错误

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

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

解决方法

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

但是,由于A类是公共的,并且我假设您目前没有任何其他公共类,因此您需要该应用程序的入口点。这就是为什么必须使用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();
    }
}