syntax - What is wrong with using enums this way in Java? -
this question has answer here:
- how call enum individual methods? 2 answers
public enum numbers{ 1 { public string getdigit(){ return "1"; } } , 2 { public string getdigit(){ return "2"; } } , 3 { public string getdigit(){ return "3"; } } }; public static void main (string[] args) throws java.lang.exception { numbers xyz = numbers.one; system.out.println(xyz.getdigit()); } above code throws error :
main.java:38: error: cannot find symbol system.out.println(xyz.getdigit()); what reason error? , correct usage calling declaring methods inside enum each constants ?
you have defined method getdigit() on enum constants one, two , three, not on enum numbers itself.
if want xyz.getnumbers() in main method, need have method in enum class too. can leave abstract.
define there well:
public enum numbers{ 1 { @override public string getdigit(){ return "1"; } }, 2 { @override public string getdigit(){ return "2"; } }, 3 { @override public string getdigit(){ return "3"; } }; // define `getdigit()` method on level of enum too! public abstract string getdigit(); }; of course in simple example it's better implement in enum numbers like:
public enum numbers { one("1"), two("2"), three("3"); private string digit; numbers(string digit) { this.digit = digit; } public string getdigit() { return digit; } } but if logic complex may override method on enum instances themselves.
Comments
Post a Comment