Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java enum in Constructor

i have a class person with a enum Gender and in the Person Constructor i want to initialize the gender and age. How can i instantiate a new Person in main() method?

class Person  {

   public enum Gender { M,F }

   int age;
   Gender gender;

   public Person(int age, Gender gender) {
       this.age=age; this.gender=gender;
   }           
}

public static void main(String[] args) {
    Person p = new Person(20, ?);        
}

Best Regards.


2 Answers

Use

Person p = new Person(20, Person.Gender.M);

Note that a nested enum is accessed like a nested static class.

like image 197
DontKnowMuchBut Getting Better Avatar answered Jan 26 '26 22:01

DontKnowMuchBut Getting Better


Person p = new Person(20, Person.Gender.M); works of course.

But it is clumsy enough to prefix the enum by the Person enclosing class at each time you need to specify an enum value.

So add the correct import in the client class. The IDE automatic imports feature should do it for you.

import Person.Gender;

and use a straighter way :

Person p = new Person(20, Gender.M);
like image 34
davidxxx Avatar answered Jan 27 '26 00:01

davidxxx