当前位置: 首页 > 面试题库 >

Java:如何从主方法调用非静态方法?

刘和玉
2023-03-14
问题内容

正在学习Java,现在遇到以下问题:我将main方法声明为

public static void main(String[] args) {

..... }

在我的主要方法中,因为它是静态的,所以只能调用其他静态方法!!!为什么呢

例如:我有另一堂课

 public class ReportHandler {       
     private Connection conn;   
     private PreparedStatement prep;
     public void executeBatchInsert() { ....
 } }

所以在我的主班我声明一个 private ReportHandler rh = new ReportHandler();

但是,如果它们不是静态的,我将无法调用任何方法。

这哪里出错了?

编辑:对不起,我的问题是:如何“设计”该应用程序,以允许我从“起点”调用其他类static void main


问题答案:

你只需要创建一个ReportHandler实例:

ReportHandler rh = new ReportHandler(/* constructor args here */);
rh.executeBatchInsert(); // Having fixed name to follow conventions

实例方法的重点是它们是特定于类的特定实例的,因此你首先需要创建一个实例。这样,实例将可以访问正确的连接并根据你的情况准备语句。只是打电话ReportHandler.executeBatchInsert,上下文不够。

了解这一点非常重要:

  • 实例方法(和字段等)与特定实例有关
  • 静态方法和字段与类型本身相关,而不是特定实例
    一旦理解了根本的区别,就可以在不创建实例的情况下调用实例方法。例如,问“ 那个人的身高是多少?” 就很有意义。(对于特定的人),但问“人的身高是多少?”没有道理。(未指定人员)。

假设你是从书本或教程中学习Java,则应阅读更多有关静态和非静态方法等的示例-这是理解的重要区别,在理解之前,你将遇到各种问题。



 类似资料:
  • 问题内容: 例如,我正在尝试做这样的事情 我收到一条错误消息,告诉我无法从静态环境中引用非静态变量。因此,如果这是真的,我将如何在main内部使用非静态方法? 问题答案: 你不能 非静态方法是必须在Test类的实例上调用的方法。创建Test的实例以在您的main方法中使用:

  • 问题内容: 尝试在静态类中调用非静态方法时遇到错误。 无法从类型播放中静态引用非静态方法methodName() 我不能使该方法静态,因为这也给我一个错误。 此静态方法无法从xInterface隐藏实例方法 有什么办法可以在另一个静态方法中轮回调用非静态方法?(这两种方法位于单独的包和单独的类中)。 问题答案: 从静态方法中调用非静态方法的唯一方法是使类的实例包含非静态方法。根据定义,非静态方法是

  • 我需要从AsyncTask调用一个非静态方法 必须在onPostExecute中调用此方法 我用过: 编辑:我尝试过: 投掷:

  • 这个问题相当复杂,我不知道以前是否有人问过,因为我不知道如何在搜索框中表达这个问题。 下面是代码: 静态成员将在更多静态方法中再次使用,但我需要首先将其时区设置为“UTC”。有没有方法调用<code>。setTimeZone(“UTC”)一劳永逸?或者我必须调用<code>。setTimeZone(“UTC”)在每个静态方法中?

  • 我最近对 PHP 5.4 进行了更新,但收到有关静态和非静态代码的错误。 这是错误: 这是第371行: 我希望有人能帮忙。

  • 问题内容: 我正在尝试使用此功能,但正在收到消息。 我可以简单地使其静态化,从而解决了我的问题,但是如果不走那条路线怎么办。我想保持方法非静态。 以下是一些代码,可让您了解发生了什么: 问题答案: 创建您的课程的实例 这是一个实例方法,它需要一个实例来访问它。请阅读有关类和对象的官方教程。