Ce qui me paraît le plus propre en terme de design logiciel est de définir une interface Collider avec une méthode getHitBox(). Ensuite il suffit que tes classes Joueur, Ennemi et PNJ implémentent l'interface Collider, et que la méthode entityCollision prenne en paramètre deux Collider au lieu de deux entités.
Normalement la gestion des collisions ne devrait pas nécessiter de savoir quel est l'objet qui entre collision, il suffit juste que chaque objet pouvant entrer en collision fournisse les informations permettant de déterminer s'il y a collision ou non.
Après, ce n'est pas vraiment le design que j'adopterais dans l'absolu, mais ça devrait te permettre de résoudre simplement ton problème.