When dealing with postal codes in global applications, it’s often useful to determine the type of postal code identifier (like ZIP Code, Postcode, etc.) based on a country name. This article shows how to do just that using a clean and scalable Java enum
approach.
🧱 Background: PostalCodeType
Enum
Let’s say you have an enum that looks like this:
java
public enum PostalCodeType {
POSTAL_CODE("General"),
ZIP_CODE("United States"),
PIN_CODE("India"),
POSTCODE("United Kingdom, Australia, etc."),
CEP("Brazil"),
PLZ_DE("Germany"),
PLZ_AT("Austria"),
PLZ_CH("Switzerland"),
CAP("Italy"),
EIRCODE("Ireland"),
NPA("Switzerland"),
CP("Spain");
private final String country;
PostalCodeType(String country) {
this.country = country;
}
public String getCountry() {
return country;
}
@Override
public String toString() {
return name() + " (" + country + ")";
}
// 🔍 Get enum from country name (partial match)
public static PostalCodeType fromCountry(String countryName) {
for (PostalCodeType type : values()) {
if (type.getCountry().contains(countryName)) {
return type;
}
}
throw new IllegalArgumentException("No enum constant with country name: " + countryName);
}
}
🇬🇧 Example: Get Postal Code Type for "United Kingdom"
Here’s how you can retrieve the postal code type associated with the United Kingdom:
java
public class PostalCodeExample {
public static void main(String[] args) {
try {
PostalCodeType ukPostalCodeType = PostalCodeType.fromCountry("United Kingdom");
System.out.println("Postal Code Type for UK: " + ukPostalCodeType);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
✅ Output
css
Postal Code Type for UK: POSTCODE (United Kingdom, Australia, etc.)
🛠️ Why Use This Pattern?
- Flexible: Supports partial matches like
"United Kingdom"
or "Australia"
. - Maintainable: Easy to add new types and countries as the enum evolves.
- Safe: Compile-time safety for using specific identifiers, not raw strings.
🚨 Optional: Exact Match Version
Want exact matches only? Just tweak the method:
java
if (type.getCountry().equalsIgnoreCase(countryName)) {
return type;
}
🧠 Summary
Using a Java enum with a helper method like fromCountry()
provides a powerful and maintainable way to map countries to postal code types. Whether you're displaying the appropriate label on forms or validating inputs, this approach scales well across international applications.