Designing and implementing generic software components is encouraged b
y languages such as object-oriented ones and commonly advocated in mos
t application areas. Generic software components have many advantages
among which the most important is reusability. However, it comes at a
price: genericity often incurs a loss of efficiency. This paper presen
ts an approach aimed at reconciling genericity and efficiency. To do s
o, we introduce declarations to the Java language to enable a programm
er to specify how generic programs should be specialized for a particu
lar usage pattern. Our approach has been implemented as a compiler fro
m our extended language into standard Java.