Jump to content

What's an Enum [Part-One]


Joseph

Recommended Posts

Credits to @Divinity for letting me use his enum as an example biggrin.pngQwPha8E.png

 

 

Example: (I will be using this enum through out the whole tutorial, the variable will be shorten down to make space). 

public enum ThievingNPC {

    MAN("Man", 1),
    FARMER("Farmer", 10),
    FEMALE("HAM Female", 15),
    MALE("HAM Male", 20),
    HAM_GUARD("HAM Guard", 20),
    WARRIOR("Al-karid Warrior", 25),
    ROGUE("Rogue", 32),
    MASTER_FARMER("Master Farmer", 38),
    GUARD("Guard", 40),
    PALADIN("Paladin", 70),
    GNOME("Gnome", 75),
    HERO("Hero", 80),
    ELVE("Elve", 90);

    private String name;
    private int lvl;

    ThievingNPC(String name, int lvl){
        this.name = name;
        this.lvl = lvl;
    }

    public String getName(){
        return name;
    }

    public int getLevel(){
        return lvl;
    }
}

What’s an Enum?

An Enum is a data type, just like an interface and class. Enums and Classes consist of some similar characteristics, for example: constructor and some general methods.  But the most unique things about Enums would be that they allow you to pre-define constants, which then allow you to access them at any time.

 

What’s a Data Type?

So a Data Types would be consider something like: Int, String, Boolean etc.. So what I’m trying to say, is that your allowed to create methods out of an Enum. You’re allowed to use them, like you would in an argument, constructor,  and even a method.

Example:

	public void something(Enum name)	{
		
	}

	public EnumName somethingElse()	{
		return enumVariable
	}

Parts of an Enum: (in order)

Example:

//variables
//private fields
//Enum constructor
//setters & getters methods
//your own custom methods

How to create an Enum:

When you want to create an Enum, you will start off with a modifier (optional). Followed by the key word “enum”, then after follows the name of the Enum. Finally end it with brackets  “{     }”

Example: 

public enum ThievingNPC {

}

Enum Conventions:

Naming the Enum: You must capitalize the first letter in every word (no spaces ).

Example:

//The only reason why my enum is called ThievingNPC, and npc is in all caps is because it is an acronym
ThievingEnum 
YouGetItNow

Naming Variables: You must capitalize all letters, and you must replace all spaces with underscores (“_”).

Example:

ROGUE
MASTER_FARMER

Adding in variable (use Conventions):

This is where the fun begins. Now you are allow to add in as many variables as you want. Just know that after every variable you end it with a coma “,”. But at your last variable it must end in a semicolon “;”.

Example:

MAN(),
HAM_GUARD();

More important info about variables:

Once you create your variables, if you decide not to add any predefined constants (hence the infomation in between the parenthesis after the variable name), then you dont need to addin the parenthesis. The parenthesis are meant to help organize what information goes with which variable.

Example: (this is part of my Magic Manager snippet) "If you dont understand then dont worry this isnt that important".

	public static enum Rune	{
		STEAM, MIST, MUD, LAVA, SMOKE, DUST,
		EARTH, FIRE, WATER, AIR, ASTRAL, BLOOD, 
		BODY, CHAOS, COSMIC, DEATH, LAW, MIND, NATURE, SOUL;
		
		@Override
		public String toString() {
			return super.name().toLowerCase() +" rune";
		}		
	}

How to create Constructor:

  • Optional adding a modifier. With Enum you’re not allowed to use the “public” keyword modifier. Since Enum variables are static.
  • Use the Enum name
  • followed by Arguments. Your constructor Argument must match the arguments within the variables.
  • and end with brackets  “{     }”.

Example:

    MAN("Man", 1),
    FARMER("Farmer", 10);

    ThievingNPC(String name, int lvl)       { 
    }

What to do within the Constructor:

You must first create some private fields. Then make your Constructor argument equal those private fields.

Example of the key word this: link

Example:

public enum ThievingNPC {

    MAN("Man", 1),
    FARMER("Farmer", 10);

    private String name;
    private int lvl;

    ThievingNPC(String name, int lvl){
        this.name = name;
        this.lvl = lvl;
    }
}

Creating Methods:

Since your fields are private you need some sort of way to be able to access the values. So this is where you would create your getter methods. Also any other custom method you would need.

Example:

public enum ThievingNPC{

    MAN("Man", 1),
    FARMER("Farmer", 10);

    private String name;
    private int lvl;

    ThievingNPC(String name, int lvl){
        this.name = name;
        this.lvl = lvl;
    }

//from here and below are where you put your methods at

    public String getName(){
        return name;
    }

    public int getLevel(){
        return lvl;
    }
}

Some Default Enum Methods & Returns:

These are some of the default methods that Enum's come with. There's many more, but these are the important ones, and the ones i like to use biggrin.png.

*Format: (method name, return type) //comment if any.

  • values(), Returns: an array of your enum variables. //Static
  • valueOf(String s), Returns: an enum variables. //Static
  • compareTo(E o), Returns: the distance between the two enum variable, using there ordinal().
  • ordinal(), Returns: the index in of the enum variable.
  • name(), Returns: the exact enum variable name.
  • toString(), Returns: the exact enum variable name. // if toString() isnt overrided.
  • toString(), Returns: what ever you told the method to return. // if toString() is overrided.

 

How to access the Enum and there variables (in order):

  • Start with, the Enum name.
  • followed by, the variable name.
  • then, end with the method.
  • Which returns the method.

Example:

ThievingNPC.MASTER_FARMER.getLevel();

Returns:  38

 

 

End of part one, beginner guide.

Link to part two: link not yet ready

Edited by josedpay
  • Like 8
Link to comment
Share on other sites

Nice tutorial, Enums were a bit tricky for me to grasp when I was learning a few years ago. smile.png I don't blame anyone, they are a bit confusing at first.

 

You might want to explain why you would use Enums, for example the Skill Enum in the API, use that as an example.

that will be coming up next, after i finish teaching them how to create them :D. And also ill be teaching them like little handy tricks you could do with enums

Link to comment
Share on other sites

You should work on your grammar (if your first language isn't English, then it's understandable), as it can sometimes make your point a little harder to understand.

I like the tutorial though, Enums are a pretty hard thing to get a hang of, and once you do you realize how nifty they are and how useful they can be. :D

Thanks, m8.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...