This is one of the double-dispatch schemes. Could be implemented by the 'visitor' pattern.
But doesn't take you very far. First, it is not symmetric and second you end up very soon with
1 2 3 4 5
| if ( c instanceof Bullet ) .... else if ( c instanceof SpaceStation ) ..... |
This suffers from the option to implement new Collisionables without touching the existant.
Also, kind of collision, location, time, rel. speeds,... are missing for response evaulation. This would lead to an VERY bloated Collisionable interface that anticipates everything you could invent in the future.