Q:

Should my game handle collisions in the Player object?

I'm making a 2D platform game. Right now I'm just working on making a very generic Player class. I'm wondering if it would be more efficient/better practice to have an ActionListener within the Player class to detect collisions with Enemy objects (also have an ActionListener) or to handle all the collisions in the main world. 
Furthermore, I'm thinking ahead about how I will handle collisions with the platforms themselves. I've looked into the double boolean arrays to see which tiles players can go to and which they can't. I don't understand how to use this class and the player class at the same time.

A:

tl;dr I recommend handling the collisions "in the main world"
I can tell you what I'm doing in my platformer (still early in development). It seems to work pretty well.
I have an Updater class which handles basically all of the game logic for updates. That means:

Processing keyboard input to adjust player movement
Collision checks
Collision reponses

I tried to write this stuff mostly in functional style (i.e., static methods) so I'm not dependent upon state and side-effects to perform basic update functions.
About 2 years ago when I first hacked together a prototype for a platformer, I had most of the collision and response in the Player class (or an abstract base class). This turned Player into a cluttered mess. When I recently did a re-write, I decided move all of that logic out of the Player (and other types of entity classes). Now, each entity class is more or less just a container for state; there's very little logic. For me, I find this much easier to maintain. (It also forces me to write simpler and more general code.)

A:

After a few years of research, game programming, trial and error, I've come back to answer my own question. I've found that the best way is to do this is using the Artemis Entity Component system. For those interested, research in component based architecture. It changed my life (for the better). 
Create a Collision Component and attach it to the "Player" entity. Then create another class, the CollisionSystem, where you handle all Entities that have the Collision Component. In the CollisionSystem, do all of your fancy logic, intersection checking, collision handling, etc. 

