HowToDoInJava

  • Python
  • Java
  • Spring Boot
  • Dark Mode
Home / Java / Java Enum / Java enum with string values

Java enum with string values

In this guide to Java enum with string values, learn to create enum using strings, iterate over all enum values, get enum value and to perform reverse lookup to find enum by string parameter.

You should always create enum when you have fixed set of properties with constant values. Being inherently singleton, they provide better performance.

1. Create java enum with string values

Java program to create enum with strings. This enum contains deployment environments and their respective URLs. URLs are passed to enum constrctor for each enum constant.

public enum Environment 
{
	PROD("https://prod.domain.com:1088/"), 
	SIT("https://sit.domain.com:2019/"), 
	CIT("https://cit.domain.com:8080/"), 
	DEV("https://dev.domain.com:21323/");

	private String url;

	Environment(String envUrl) {
		this.url = envUrl;
	}

	public String getUrl() {
		return url;
	}
}

2. Iterate enum constants

To iterate over enum list, use values() method on enum type which return all enum constants in an array.

//Get all enums
for(Environment env : Environment.values())
{
	System.out.println(env.name() + " :: "+ env.getUrl());
}

Output:

PROD :: https://prod.domain.com:1088/
SIT :: https://sit.domain.com:2019/
CIT :: https://cit.domain.com:8080/
DEV :: https://dev.domain.com:21323/

3. Java enum to String

To get single enum value (e.g. get prod URL from enum constant) use it’s value method, you created.

//Using enum constant reference
String prodUrl = Environment.PROD.getUrl();

System.out.println(prodUrl);

Output:

https://prod.domain.com:1088/

4. Get enum by name – enum string parameter

If you want to get enum constant using it’s name, then use valueOf() method.

//First get enum constant reference from string
Environment sitUrl = Environment.valueOf("SIT");

System.out.println(sitUrl.getUrl());

Output:

https://sit.domain.com:2019/

5. Reverse Lookup – Get enum name from value

Many times, we will have the value of enum with us, and we will need to get enum name by string value. This is achieved using reverse lookup.

In reverse lookup, enum internally maintains a map of value-enum as key-value pair. This map is searched, application need to find enum with it’s associated string value.

import java.util.HashMap;
import java.util.Map;

public enum Environment 
{
	PROD("https://prod.domain.com:1088/"), 
	SIT("https://sit.domain.com:2019/"), 
	CIT("https://cit.domain.com:8080/"), 
	DEV("https://dev.domain.com:21323/");

	private String url;

	Environment(String envUrl) {
		this.url = envUrl;
	}

	public String getUrl() {
		return url;
	}
	
	//****** Reverse Lookup Implementation************//

	//Lookup table
	private static final Map<String, Environment> lookup = new HashMap<>();
 
	//Populate the lookup table on loading time
	static 
	{
		for(Environment env : Environment.values())
		{
			lookup.put(env.getUrl(), env);
		}
	}
 
	//This method can be used for reverse lookup purpose
	public static Environment get(String url) 
	{
		return lookup.get(url);
	}
}

To use this reverse lookup, in application code use enum.get() method.

//Get enum constant by string - Reverse Lookup
String url = "https://sit.domain.com:2019/";

Environment env = Environment.get(url);

System.out.println(env);

Output:

SIT

Read More: Complete Java Enum Guide

Drop me your questions on Java 8 enum in comments section.

Happy Learning !!

Read More:

Java Enum Tutorial

Was this post helpful?

Let us know if you liked the post. That’s the only way we can improve.
TwitterFacebookLinkedInRedditPocket

About Lokesh Gupta

A family guy with fun loving nature. Love computers, programming and solving everyday problems. Find me on Facebook and Twitter.

Feedback, Discussion and Comments

  1. Leslie Murphy

    May 8, 2020

    See SO Thread

    Java 8

    public static final Environment  getByValue(String value){
        return Arrays.stream(Environment.values())
                     .filter(enumEnv > enumEnv.url.equals(value))
                     .findFirst().orElse(ENV_UNKNOWN);
    }
  2. Vernet Bien-aime

    February 12, 2020

    Thanks for this, You saved me at work today.

  3. Rolando murillo

    July 9, 2019

    Extremely helpful reverse lookup approach. THANK YOU 😉

  4. Tugce

    November 12, 2018

    Thank you.. very clear. great explanation. Thank you so much

  5. Saurabh

    October 11, 2018

    This is the first time I understood enum and able to use it easily thanks.

  6. Lukas Vondracek

    June 4, 2017

    It is good standard to use get / set methods. So I think getUrl() would be better.

    • Lokesh Gupta

      June 5, 2017

      You are correct. Thanks for the feedback.

  7. Cyril

    June 2, 2017

    Also you could use lambda for search enum value by string

    public static Environment get(String url) {
    return Arrays.stream(values())
    .filter(env -> env.url().equals(url))
    .findFirst()
    .orElse(<some default value>)
    // .orElseThrow(() -> new IllegalArgumentException("Invalid spConnectionId: " + url);  --- or go thru exception
    }
    
    • Lokesh Gupta

      June 2, 2017

      Perfect !! Thanks for sharing !!

Comments are closed on this article!

Search Tutorials

Java Enum Tutorial

  • Java Enum – Complete Guide
  • Java Enum – String Constants
  • Java Enum – Enum Singleton
  • Enumerator vs Iterator

Java Tutorial

  • Java Introduction
  • Java Keywords
  • Java Flow Control
  • Java OOP
  • Java Inner Class
  • Java String
  • Java Enum
  • Java Collections
  • Java ArrayList
  • Java HashMap
  • Java Array
  • Java Sort
  • Java Clone
  • Java Date Time
  • Java Concurrency
  • Java Generics
  • Java Serialization
  • Java Input Output
  • Java New I/O
  • Java Exceptions
  • Java Annotations
  • Java Reflection
  • Java Garbage collection
  • Java JDBC
  • Java Security
  • Java Regex
  • Java Servlets
  • Java XML
  • Java Puzzles
  • Java Examples
  • Java Libraries
  • Java Resources
  • Java 14
  • Java 12
  • Java 11
  • Java 10
  • Java 9
  • Java 8
  • Java 7

Meta Links

  • About Me
  • Contact Us
  • Privacy policy
  • Advertise
  • Guest and Sponsored Posts

Recommended Reading

  • 10 Life Lessons
  • Secure Hash Algorithms
  • How Web Servers work?
  • How Java I/O Works Internally?
  • Best Way to Learn Java
  • Java Best Practices Guide
  • Microservices Tutorial
  • REST API Tutorial
  • How to Start New Blog

Copyright © 2020 · HowToDoInjava.com · All Rights Reserved. | Sitemap

  • Sealed Classes and Interfaces