Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解枚举类中的Java 7隐式方法调用_Java_Oop_Enums_This - Fatal编程技术网

理解枚举类中的Java 7隐式方法调用

理解枚举类中的Java 7隐式方法调用,java,oop,enums,this,Java,Oop,Enums,This,我是Java新手,正在学习语言基础知识 有人能给我解释一下,当没有函数调用toString方法时,它是如何被调用的吗?我认为这与第二行的实际枚举词有关,例如: 卡拉玛塔(“卡拉玛塔”)、利古里奥(“利古里奥”) 此枚举类的全部目的是使枚举值不会以所有大写字符打印到屏幕上 有人能给我解释一下这个类是如何使用toString方法的吗?什么时候叫它?它叫什么名字 public enum OliveName { KALAMATA("Kalamata"),LIGURIO("Ligurio"),P

我是Java新手,正在学习语言基础知识

有人能给我解释一下,当没有函数调用toString方法时,它是如何被调用的吗?我认为这与第二行的实际枚举词有关,例如:

卡拉玛塔(“卡拉玛塔”)、利古里奥(“利古里奥”)

此枚举类的全部目的是使枚举值不会以所有大写字符打印到屏幕上

有人能给我解释一下这个类是如何使用toString方法的吗?什么时候叫它?它叫什么名字

public enum OliveName {

    KALAMATA("Kalamata"),LIGURIO("Ligurio"),PICHOLINE("Picholine"),GOLDEN("Golden");

    private String nameAsString;

    //for enum classes, the constructor must be private
    private OliveName(String nameAsString) {
        this.nameAsString = nameAsString;
    }

    @Override
    public String toString() {
        return this.nameAsString;
    }
}

就像任何物体一样

OliveName oliveName = OliveName.KALAMATA;
System.out.println(oliveName.toString());


我不明白你怎么能这么简单(oliveName);而toString方法是隐式调用的?@mosawi查看。您的问题实际上与枚举本身无关……这是通过println()方法完成的:@mosawi Close。非空对象的字符串值是由
toString()
方法返回的值,因此在本例中,是的,它是您指定的文本。@mosawi,不完全是。调用它是因为代码告诉JVM这样做--
String.valueOf()
的实现使得如果对象为
null
,则返回
“null”
,否则返回
toString()
。我不太清楚你所说的“核心方法”是什么意思——JVM只是在做代码告诉它要做的事情。
System.out.println(oliveName);