Cannot make a static reference to the non-static method的解决方法

  • 报错原因:在一个类中写了一个public String getContent()方法和一个main()方法,getContent()方法中包含了getClass()方法,在main()方法中直接调用了getContent()就出现如题的错误。这样一样
  • 解决方法:先实例化类,然后再调用getContent()就没有问题了
  • 1 GetProperties gp = new GetProperties();
    2 String s = gp.getCotent();
    • 这样一来都不要加static了
    • 说明:在静态方法中,不能直接访问非静态成员(包括方法和变量)。因为,非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。例如一个类 Student 表示学生,它有一个变量String address。如果这个类没有被实例化,则它的 address 变量也就不存在。而非静态方法需要访问非静态变量,所以对非静态方法的访问也是针对某一个具体的对象的方法进行的。对它的访问一般通过 objectName.methodName(args……) 的方式进行。而静态成员不依赖于对象存在,即使是类所属的对象不存在,也可以被访问,它对整个进程而言是全局的。因此,在静态方法内部是不可以直接访问非静态成员的。
    • Code如下:

       1 import java.io.FileNotFoundException;
       2 import java.io.IOException;
       3 import java.io.InputStream;
       4 import java.util.Properties;
       5
       6 public class GetProperties {//不用static
       7 public String getCotent(){//不用static
       8 String content=”";
       9
      10 try {
      11 Properties properties = new Properties();
      12
      13 InputStream is = getClass().getResourceAsStream(“test.properties”);//ok
      14 //InputStream is = getClass().getClassLoader().getResourceAsStream(“test.properties”); //ERROR:Exception in thread “main” java.lang.NullPointerException
      15
      16 properties.load(is);
      17 is.close();
      18
      19 content = properties.getProperty(“str1″);
      20
      21 } catch (FileNotFoundException ex) {
      22 ex.printStackTrace();
      23 }catch (IOException ex) {
      24 ex.printStackTrace();
      25 }
      26 return content;
      27 }
      28
      29 public static void main(String[] args){
      30 GetProperties gp = new GetProperties();//实例化
      31 String s = gp.getCotent();
      32
      33 System.out.println(s);
      34 }
      35 }
      36
      37 test.properties中内容为str1=123
时间: 2024-08-06 23:50:27

Cannot make a static reference to the non-static method的解决方法的相关文章

Cannot make a static reference to the non-static

今天再用一个android和php之间加密传输的问题,提示: Cannot make a static reference to the non-static method ...... 解决方法:先实例化类,然后再调用. 如: MCryptAES srtaes = new MCryptAES();   srtaes.encrypt("中国"); 这是网上的介绍: ......在静态方法中,不能直接访问非静态成员(包括方法和变量).因为,非静态的变量是依赖于对象存在的,对象必须实例化之

java中静态代码块的用法 static用法详解和static静态导入

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就

[转]关于NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的解决方法

转载地址:http://blog.csdn.net/xbl1986/article/details/7216668 Xcode是Version 4.2 Build 4D151a 根据Objective-c 2.0程序设计上的旧版本的代码会发生NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的错误 需要手动关闭工程中ARC 工程中 Build Settings--->Apple

mappedBy reference an unknown target entity property解决方法

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleDaoImpl': Injection of resource methods failed; nested exception is org.springframework.beans.factory.BeanCreationException

SPRING循环依赖(circular reference)的解决方法

循环依赖,就是说类A依赖与B,而B又依赖于A,这种情况本不应该发生,发生这种情况是因为我在项目中使用的工厂模式,用一个工厂来生产一些管理器类,而某一管理器要需要另一管理器提供支持所以就要引用工厂类,而这个管理器和这个工厂就出现了循环依赖(项目中实际的逻辑比这个更复杂,因为我在项目中实现的了一个工作流数据POJO类延迟加载的功能像hibernate 那样在调用一个类的集合属性时才到要shark中去查找数据而不是在new里加载,并且这个数据类的集合属性并不包含加载数据的代码只是普通的Bean方法ge

关于static静态块的使用和static list的使用

public class CorsConfiguration { /** * Wildcard representing <em>all</em> origins, methods, or headers. */ public static final String ALL = "*"; private static final List<HttpMethod> DEFAULT_METHODS; static { List<HttpMethod

php中出现Strict Standards: Only variables should be passed by reference in的解决方法

今天在练习一个小demo的时候,在localhost文件中出现了这样的notice,具体的原因和解决方法做如下分析. 题目:已知一个字符串如下,将其最后两项转换为数组. $week = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday"; 主要的思路:1. 先使用explode()函数将字符串进行分割,因该函数的结果会返回一个数组,所以分割的部分会独立的存入该数组中.  2. 再使用array_splice(

Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。

Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnb

Pycharm 出现Unresolved reference &#39;&#39; 错误的解决方法

在用Pycharm做Pygame游戏小实战的时候碰到一个很无语的问题 如下 什么鬼?????? 我明明有写settings模块啊 而且还是放在同一个目录下  然后Pycharm给我来了一个错误 而且在dos窗口运行的时候No Problem 虽然不会有什么问题 但是你一个红色的提示在那里让我很不舒服  对,就是很不舒服 然后在网上查了一下 解决方法如下: 1.  2.  ps: 记得要  Apply(应用才能生效的...) 3. 最后就完美解决啦 Pycharm 出现Unresolved ref