2014-07-07 31 views
-1

我是Java新手,正在學習語言基礎知識。在Enum類中瞭解Java 7隱式方法調用

有人可以向我解釋如何在沒有函數調用時調用toString方法嗎?我認爲這是與第二行的實際枚舉的詞語,如:

KALAMATA(「卡拉馬塔」),LIGURIO(「Ligurio」)...

此枚舉類的全部目的是這樣ENUM值不打印屏幕上的所有大寫字符。

有人可以請解釋我如何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; 
    } 
} 

回答

0

非常像任何對象。

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

System.out.println(oliveName); 
+0

我不明白你怎麼能只SYSOUT(oliveName);並且toString方法被隱式調用? – mosawi

+1

@mosawi看看[println()']的實現(http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/io/PrintStream。 Java的#PrintStream.println%28java.lang.Object%29)。你的問題實際上並不是與枚舉本身有關的... – awksp

+1

這是通過println()方法完成的:http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream。 html#println%28java.lang.Object%29 – wvdz