关于Non-static method xx cannot be referenced from a static context的分析与解决方案

关于static method的解释

想要解决上面的报错,我们首先需要了解什么叫做static method(静态方法)。

静态方法为类所有,一般情况下我们通过类来使用(而对于不加static的实例方法我们则只能通过对象的来调用)。
以下我们通过一些代码的例子来对此进行说明:

在同一类里面调用静态方法与实例方法的区别:

点击查看代码

public class Main{
    public static viod main(String[] args){
    //Test01();//直接调用Test01会报Non-static method xx cannot be referenced from a static context.
    //用如下方式调用Test01
    Main m=new Main();
    m.Test01();

    //Test02可以直接调用,通过类
    Main.Test02();

    }
    public viod Test01(){
    System.out.println("此方法为非静态方法")
    }

    public static viod Test02(){
    System.out.println("此方法为静态方法")
    }
}

通过上面的代码不难看出我们的main()方法是静态的,如果要在 main() 方法中调用本类中的其他方法,则该方法也必须是静态的,否则需要先创建本类的实例对象,然后再通过对象调用该成员方法。

在不同类里面调用静态方法与实例方法的区别:

点击查看代码

public class Main{
    public static viod main(String[] args){
        TestNonStatic.Test01();//会报错,不能直接引用其他类的非静态方法
        TestNonStatic testnonstatic=new TestNonStatic();
        TestNonStatic.Test01;//依然可以通过创建一个实体对象来访问。
        TestNonStatic.Test02();
    }
}

class TestNonStatic{
    viod Test01(){
    System.out.println("其他类中的实例方法")
    }
    static void Test02(){
    System.out.printlin("其他类中的静态方法")
    }
}

通过以上代码不难看出静态方法与实例方法的主要区别在于是否需要创建一个对象来引用所对应的方法。只要满足封装的条件在同一类或者不同类均不影响调用。(从内存模型上来讲,我们的静态成员是处于堆中的,已经被分配了内存,所以我们可以直接对其进行调用。而非静态成员是没有被分配内存的,只有当他们被对象化,实例化才能被我们调用)。

Original: https://www.cnblogs.com/FrankFaner/p/16699882.html
Author: Frank&Faner
Title: 关于Non-static method xx cannot be referenced from a static context的分析与解决方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622088/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java8 Stream流式编程,极大解放你的生产力!

    java8自带常用的函数式接口 Predicate<t> boolean test(T t)</t> 传入一个参数返回boolean值 Consumer&l…

    Java 2023年5月29日
    074
  • 003-博学谷-年度钻石C++/C-Unix/Linux(2)

    常用命令 3.1 概述 很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。 Linux 刚出世时没有什么…

    Java 2023年6月7日
    0126
  • Http协议&状态码

    什么是Http协议 Http协议即超文本传送协议 (HTTP-Hypertext transfer protocol) 。是一个简单的请求-响应协议,它通常运行在TCP之上。 它定…

    Java 2023年6月9日
    094
  • Spring 源码(18)Spring IOC 容器的创建总结

    Spring IOC Bean对象的创建总结 根据前面的介绍,可以进行Spring IOC容器创建Bean的总结: 调用构造函数启动,调用过程中父类会忽略调用三个 Aware接口,…

    Java 2023年6月14日
    0111
  • ELK 架构之 Logstash 和 Filebeat 配置使用(采集过滤)

    相关文章: ELK 架构之 Elasticsearch 和 Kibana 安装配置 ELK 架构之 Logstash 和 Filebeat 安装配置 ELK 使用步骤:Spring…

    Java 2023年5月29日
    091
  • git tag

    git tag 标签的常用命令操作 link: 官方文档date: 2022-09-04 简介 git tag用于git标签的相关操作。具体详情可查看文首link的官方文档。 常用…

    Java 2023年6月13日
    063
  • 内部类(Java)

    基本介绍 概念:在一个类的内部再定义一个完整类 特点:编译之后可生成独立的字节码文件;内部类可以直接访问外部类的私有属性,不破坏封装性 分类:成员内部类;静态内部类;局部内部类;匿…

    Java 2023年6月9日
    095
  • spring boot 自定义线程池与使用

    一、进行线程池创建 二、创建bean操作对象 提供根据beanName获取,手动注入bean等方法,适用于不被spring管理的类中(thread、callback) 三、创建异步…

    Java 2023年6月16日
    072
  • spring-gateway基于数据库 + nacos 的动态路由

    动态路由的实现方式多种多样,研究一下基于数据方式的动态路由。 1. 创建项目,并pom.xml文件引入如下依赖 <span class="code-snippet_…

    Java 2023年6月7日
    094
  • 连接数据库空异常

    解决过程(嫌麻烦可以直接看结论): 首先我以为是我的数据库驱动名字什么的没有写对,但是确实是对的,使用的是 com.mysql.cj.jdbc.Driver ,也没有发现多余的空格…

    Java 2023年6月8日
    073
  • WindTerm:新一代开源免费的终端工具,GitHub星标6.6k+,太酷了!

    继 Tabby、Warp 后,今天再来给大家推荐一款终端神器——WindTerm,完全开源,在 GitHub 上已经收获 6.6k 的 star。 https://github.c…

    Java 2023年6月9日
    075
  • Moriis神级遍历!

    Moriis 遍历 Morris 遍历是二叉树遍历的一种方式,传统的递归和非递归遍历的时间复杂的都是O(N),空间复杂度都是O(h)(h为树的高度),而 Morris 遍历可以做到…

    Java 2023年6月8日
    094
  • springboot1.5.4 log4j

    resources下面添加: log4j.properties: # log4j.rootCategory=INFO, stdout, file, errorfile log4j….

    Java 2023年5月30日
    0125
  • 深入Java微服务之网关系列3: SpringCloudalibaba gateway详解(史上最全)

    九、服务网关:Gateway 9.1、网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能…

    Java 2023年5月29日
    092
  • Java多线程(一)

    Java多线程(一) Java多线程(一) – 一、基本概念:程序、进程、线程 二、多线程的创建与使用 2.1 多线程的创建方式一:继承于Thread类 2.2 Thr…

    Java 2023年6月9日
    0113
  • 06-CircuitBreaker断路器

    1、介绍 Spring Cloud Circuit breaker provides an abstraction across different circuit breaker…

    Java 2023年6月7日
    0114
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球