Okay Carlos, thanks for the attempt to explain why you like PicoContainer, but I’m still not convinced.

You are saying that Pico forces you to structure your classes better by avoiding getters and setters. First of all, I don’t believe in this kind of generalization and while I do agree that the practice you recommend improves your code quite a bit, I argue that in real life, things are not so easy. Even your simple BankAccount example would become much more complicated in the real world and I challenge you to stick to the rule “no setters/getters” then.

But for the sake of argument, let’s assume you can indeed “normalize” any Java class by removing all setters and getters and by initializing your object only with constructors. Well, in that case, what you are telling me is that PicoContainer has made you think differently. It’s changed the way you program and has made you a better programmer, but it still doesn’t make the use of PicoContainer mandatory. It’s a bit like learning about Aspect-Oriented Programming and realizing the importance of separation of concerns. But you can apply such technique without any AOP framework.

I really want to like PicoContainer, but so far, I am still unconvinced why I should adopt it. I went through the source code of the ten-or-so projects that use it and I haven’t found one very obvious usage which would be hard to achieve without it.

Carlos, can you try again?