▁of ▁that ▁class . ▁Therefore , ▁the ▁designer ▁of ▁the ▁class ▁no ▁longer ▁needs ▁to ▁take ▁variance ▁into ▁account , ▁increasing ▁re - us ability . ▁ ▁Java ▁provides ▁use - site ▁variance ▁annotations ▁through ▁wild cards , ▁a ▁restricted ▁form ▁of ▁bounded ▁exist ential ▁types . ▁A ▁parameter ized ▁type ▁can ▁be ▁instanti ated ▁by ▁a ▁wild card ▁ ▁together ▁with ▁an ▁upper ▁or ▁lower ▁bound , ▁e . g . ▁ ▁or ▁. ▁( An ▁un bounded ▁wild card ▁like ▁ ▁is ▁equivalent ▁to ▁. ) ▁Such ▁a ▁type ▁ ▁represents ▁ ▁for ▁some ▁unknown ▁type ▁ ▁which ▁satisfies ▁the ▁bound . ▁For ▁example , ▁if ▁ ▁has ▁type ▁, ▁then ▁the ▁type check er ▁will ▁accept ▁ ▁Animal ▁a ▁= ▁l . get ( 3 ); ▁ ▁because ▁the ▁type ▁ ▁is ▁known ▁to ▁be ▁a ▁sub type ▁of ▁, ▁but ▁ ▁l . add ( new ▁Animal ()); ▁ ▁will ▁be ▁rejected ▁as ▁a ▁type ▁error ▁since ▁an ▁ ▁is ▁not ▁necessarily ▁an ▁. ▁In ▁general , ▁given ▁some ▁interface ▁, ▁a ▁reference ▁to ▁a ▁ ▁forb ids ▁using ▁ ▁methods ▁from ▁the ▁interface ▁where ▁ ▁occurs ▁cont rav ari antly ▁in ▁the ▁type ▁of ▁the ▁method . ▁Con vers ely , ▁if ▁ ▁had ▁type ▁ ▁one ▁could ▁call ▁ ▁but ▁not ▁. ▁ ▁While ▁plain ▁generic ▁types ▁in ▁Java ▁are ▁invariant ▁( e . g . ▁there ▁is ▁no ▁sub ty ping ▁relationship ▁between ▁ ▁and ▁), ▁wild card ▁types ▁can ▁be ▁made ▁more ▁specific ▁by ▁specifying