is it really necessary to set localDevice in the constructor of com.serotonin.bacnet4j.obj.BAcnetObject, doing this in localDevce.add() should be the better way?
Check out LocalDevice. It is an example of where a BACnetObject is created without being added to the localDevice instance. It's debatable whether it needs to know the localDevice instance i suppose, but it is possible to send a message to "yourself", so i'd prefer to leave it the way it is.
Create wrappers for the base Objects (BAchnetObject)
that implement the required and optional properties?
This was considered at the time of original development. It's a reasonable suggestion, but considering how BACnet attempts to normalize all object properties, how much would this really help? (Of course, at the same time BACnet goes to the trouble to define in detail all object properties, so i suppose the argument could go either way.)
And last but noit least create a library of proxies for real Devices that encapsulates the readProperty process and act as "normal" java classes with properties?
Kind of like EJBs? I suppose, but it sounds like 6 of one, half dozen of the other.