Hello, this is an idea I've had while thinking about Iterative Linear Solvers, but I think it is much more general. I don't know whether what I'm going to describe is a known pattern, or a very dirty trick I should forget about. So any advice would be greatly appreciated.
For the sake of the argument, let us stick with iterative linear solvers. Most of them modify in-place the current estimate of the solution, x (which is a RealVector). In view of observing the state of the solver during the iterations, I'd like to provide a method RealVector getCurrentSolution() As modifying the current solution outside the solver would ruin the iterations, it is imperative to return a deep copy of x. This can take time, if the vector is large. Also, it can be memory consuming. So I was wondering: would it be possible to design a ReadOnlyRealVector class, which would be final, have a unique constructor ReadOnlyRealVector(RealVector v) and extend AbstractRealVector I would keep a reference to the underlying RealVector used to construct the ReadOnlyRealVector, so that any call to a standard RealVector method would be delegated to the same method in v. EXCEPT when the method in question would normally modify the ReadOnlyRealVector, in which case an UnsupportedException would be thrown. For example v = new RealVector(); ... vro = new ReadOnlyRealVector(v); vro.map(f); // Returns v.map(f) vro.mapToSelf(f); // Throws an exception Note that "Read-Only" does not mean "Immutable", since a modification of v would modify vro. This would suit my requirements, but it should be made clear in the Javadoc. Is it clean code, or should I throw it away? In the former case, would a ReadOnly tagging interface make sense? Thanks for your comments/corrections, Sebastien --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org