Le compilateur vérifie à chaque utilisation d'une méthode, le type des variables passées en argument. L'instruction sera acceptée uniquement si elles vérifient exactement la signature de la méthode.
Les casts abusifs en C/C++ peuvent créer des failles au niveau sécurité. En Java les casts existent, mais sont sévèrement contrôlés. Ils sont acceptés si et seulement si ils correspondent à une opération concrète de conversion.