It sounds like maybe you're missing out on some design patterns and refactoring techniques. There's not really any way to learn this over night, but if you read up on some of the design patterns that are out there, it might get you thinking about how you could write code to be a little more generic and reusable.
- Design Patterns for Java
- Head First Design Patterns
- Generics in the Java Programming Language (PDF)
- 10 Tips on Writing Reusable Code