Ah, but you’re missing the point that the Properties is designed for storing Strings. I guess it’s evolved out of system properties in the form of environment variables. The only real difference between Properties and the superclass Hashtable is a few convenience methods (which rely on all keys/values being Strings) and read/write methods.
Considering there’s no obvious conversion between a String and an Object, if you want to move arbitrary data to/from a filesystem, I expect what you really want is a serialized HashMap<Object, Object>.
And yes, Properties aren’t safe to allow anyone else to access - if you pass the reference to any external code you have to assume it’s compromised. If they use the Hashtable’s put(Object, Object) method on it, you’ll likely experience a fatal error at some point in the future. Maybe you’ll be accessing data you put in before, maybe you’ll be trying to save the properties to a file. Bang. Nice.