The performance of non-generic programs written in the Java programming language should not be materially influenced by the presence of the generic extension. Preservation of the spirit of the Java programming language. The generic language should integrate well with the existing design and philosophy of the Java programming language. Good performance of generic code. The system also has additional goals.
Goals are different from constraints.
Whereas all constraints must be met, it may not be possible to meet all the goals. Goals may be traded off against each other, or may be abandoned because they contradict constraints. No priority is implied by the ordering of the goals. Good collections support. The core Collections APIs and similar APIs are perhaps the most important customers of genericity, so it is essential that they work well as, and with, generic classes.