I see the the problematic there. At least we should clarify the actual
behavior within the load() method specification stating the current state.

Having done this the question would be what could be an appropriate method
name/signature for the new behavior?

loadUnique()
loadDistinct()

or something like:

@FunctionalInterface
interface EntryRemappingFunction {
  Object merge(Object key, String oldValue, String newValue);
}

load(Reader reader, EntryRemappingFunction remappingFunction)

load(InputStream inStream, EntryRemappingFunction remappingFunction)


where the remappingFunction is used to handle existing values. So the existing methods could
be rewired internally to those methods.

Note that the functional interface is just for demonstrating the idea...


-Patrick


Changing long standing behavior when properties files have duplicate
keys could be problematic, esp. if there are properties files are
bundled with a library that is deployed with different JDK releases.
There was another discussion here recently about storing properties in
canonical form, JDK-8231640 [1] was created to look into that. I only
mention because there is other "projects" in this area if you want to
look into that too.

-Alan

[1] https://bugs.openjdk.java.net/browse/JDK-8231640

Reply via email to