Geek_To_Learn
Geek_To_Learn

Reputation: 1956

calling a function containg enum in java

I have defined a class

class Prop{
    public static enum property{
    NAME,
    CITY,
    ADDRESS;
    }
    private String NAME;
    private String CITY;
    private String ADDRESS;
    public String getValue(property pro){
    switch(pro){
    case NAME:
    return NAME;
    case CITY:
    return CITY;}
    return null;}
    }


class CallPro{
   private String name;
   name=Prop.getValue("");
 }

I am not exactly getting how to call getValue from class CallPro.

Basically what parameters should be passed to get the desired value.

I am a beginner in java

Upvotes: 1

Views: 89

Answers (1)

Ravi K Thapliyal
Ravi K Thapliyal

Reputation: 51711

To run this program you need a public static void main(String[]) method first. That's your entry point into any Java program. Since, you want to assign the values inside callPro, add the main() method there.

Next, you want to call getProperty() which is an instance method belonging to class prop, so you'll need to create an instance of it first using the new constructor() syntax.

class callPro {

    private static String name;
    private static String city;
    private static String address;

    public static void main(String[] args) {
        // create prop instance
        prop property = new prop();

        // call prop's method getValue()
        name = property.getValue(prop.property.CITY);
        city = property.getValue(prop.property.NAME);
        address = property.getValue(prop.property.ADDRESS);
        // New York, John, Central Park
        System.out.println(name + ", " + city + ", " + address);
    }
}

Notice, how I had to make callPro's members static to be able to access them inside the main() method because that's static too. Also, note how I referenced the Enums: className.enumType.enumValue.

To be able to see the values print from the main() method, you'll also need to provide values for your prop class members as

private String NAME = "John";
private String CITY = "New York";
private String ADDRESS = "Central Park";

public String getValue(property pro) {
    switch (pro) {
    case NAME:
        return NAME;
    case CITY:
        return CITY;
    case ADDRESS:
        return ADDRESS;
    }
    return null;
}

Yes, you can loop through an enum's values and retrieve your properties in a loop as

prop property = new prop();
for (prop.property prop : prop.property.values()) {
    System.out.println(property.getValue(prop));
}

enumType.values() returns an enumType[] of all enumValues which can be used with a for-each loop as shown above.

Upvotes: 1

Related Questions