ivanjonas
ivanjonas

Reputation: 609

How to encapsulate a Map into a custom object

My coworker tells me that it's lazy to use Maps, and that oftentimes the programmer's purpose would be better served by an actual object. But I don't know the best way to do so. This is further complicated (to me) by the fact that the key is an Enum type.

Say I have a Hashmap<MyEnum, MyObj> which is expected to have four hashmap keys (one for each value in MyEnum). The MyObj hashmap value is the latest of several MyObjs in a database which have the given enum value.

My best guess involves an object with four fields, or maybe two arrays containing the keys and values in order.

Not sure if this is clear or not (It's 5PM on Thursday = I'm brain-dead), so please ask for clarification if necessary.

Upvotes: 3

Views: 1480

Answers (1)

StriplingWarrior
StriplingWarrior

Reputation: 156524

While there's nothing wrong with using Maps for their intended purpose, Maps are sometimes misused as substitutes for strongly-typed objects.

String firstname = (String)myMap.get("first_name");

... as opposed to:

String firstName = person.getFirstName();

Since Java implements enums as classes, you might want to consider putting the value you're looking for onto your enum class directly:

MyEnum val = getVal();
MyObj obj = val.getMostRecentMyObj();

But I'd pay attention to separation of concerns to determine whether this really makes sense. It could well be that a Map is the appropriate tool for this job.

Upvotes: 3

Related Questions