I came across with an article about proper way of encapsulation. It really got my attention and solved some of my prior confusion. Then I thought about it's implementation. There must not be any property or ( getter method ) that expose any common reference. In order to achieve this, each inner field must be constructed freshly. But it is not always possible to know construction logic or even find a proper constructor. So I thought that deep cloning might be used for this purpose.
There are some ways to achieve deep cloning ( one way, some other ways ).
My questions are:
1- Does my approach make sense or is it completely nonsense?
2- Are deep cloning operations dangerous or uncertain? If yes, would it be proper to use such dynamic ( or uncertain) behaviors for such a core module ( on business models getters )?
PS: Even if Java is used in the article, I ask questions for .NET or C#. I am not really sure but Java might have different deep cloning ability. I don't feel comfortable with Java.