【问题标题】:static function cannot reference with this keword in java [duplicate]java中的静态函数不能用这个关键字引用[重复]
【发布时间】:2017-09-16 10:07:17
【问题描述】:

汽车.java

package com.krishna;

public class car {
    private int door;
    private int wheels;
    private String model;
    private String engine;
    private String colour;

    public void setModel(String model)
    {
        String validModel=model.toLowerCase();
        if(validModel=="krish"||validModel=="raju")
        {
            this.model = model;
        }
        else
        {
            this.model="unknown";
        }
    }

    public static String getModel()
    {
        return this.model;
    }
}

Main.java

package com.krishna;

public class Main {

    public static void main(String[] args) {
    // write your code here
        car obj1=new car();
        car obj2=new car();
        obj1.setModel("krish");
        System.out.println(obj1.getModel());
    }
}

静态函数在java中不能用这个关键字引用

【问题讨论】:

  • 首先,问问自己:getModel()方法中的this是什么对象? setModel() 中的 this 是什么对象?提示:getModel()static 修饰符,而 setModel() 没有。
  • 不是你问的,而是if(validModel=="krish"||validModel=="raju") -> How do I compare strings in Java?
  • 在静态上下文中也没有thisstatic 表示成员(这里的方法)属于整个类,而不是特定实例。

标签: java


【解决方案1】:

静态方法属于该类而不是该类的对象。从 static String getModel() 中删除 static 关键字以使其正常工作。

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 2014-04-16
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多