I've just finished Effective Java and I loved it. I'm trying to refactor one of my programs to take advantage of what I've learned, and I have a lot of questions regarding immutability.
My program is largely built around a model class representing a reminder, which is stored in a content provider. This article suggests that, since it represents data held in the content provider, I could create an immutable class that simply calls through to the content provider. But for all I know this author is completely wrong and this is a terrible idea. It sounds to me like it would be very non-performant to be calling the content provider all the time, which then queries a sqlite database, and I'm disinclined to follow this pattern.
My other question regards several small classes I have where none of their members change after they are created, but they make asynchronous calls to system services, and return the response along an interface. Can a class like that ever be immutable? The class itself is stateless and never changes once created, but it calls other classes that are closely tied to device status.