1)When writing javadocs for my code, do I need to create javadoc comments for private methods?
I put javadoc comments on everything, even private references. I'm not sure that it is necessary to go to that much trouble. But
you should certainly javadoc anything with public or protected access.
2)I have an interface, IData, which Data and a couple other classes implement. Since the public javadoc comments for the interface will cascade down to the implementing classes, should I delete the existing javadoc comments from Data.java and just rely on IData for my javadoc?
Good question. Unless there is a significant differnce from your interface comments, my instinct tells me no. But that's just an opinion. Hopefully others will look at this and give you some more opinions.
3) The Data methods getRecordCount, unlock, close, and getFieldInfo don't throw an exception. Has anybody decided to modify any of them to throw an exception? An example of why I'm concerned about this is that I have a class named FBNDataRemote which uses RMI to communicate with Data. Both Data and FBNDataRemote implement IData, and in IData getRecordCount does not throw anexception. The problem is that the stub used to connect to Data can throw RemoteException, and when FBNDataRemote.getRecordCount catches that exception it has to swallow it. If I made getRecordCount throw DataBaseException in IData, and therefore in Data and FBNDataRemote, I would not have this problem because I could catch hte RemtoeException and wrap it in a DataBaseException.
Why does FBNDataRemote have to swallow a RemoteException? It seems to me that a RemoteException has no logical connection to a DatabaseException and should not be treated as such. I just reported RemoteExceptions to the client as they occurred. I also think that candidates are skating on thin ice when they start tinkering with the Sun supplied classes. I know that most here have Data implement the interface used for client access, but quite frankly, I've never heard a good explanation as to why they think it is necessary. Just because it already fulfills the contract of the interface doesn't justify binding it to that contract henceforth and forevermore.
Hope this helps,
Michael Morris