Hmmm.
Do you have a class “Keyboard” that is implementing KeyListener?
If so, I’d be strongly tempted to make the class variables ‘up’ and ‘down’ static. Then you don’t have to pass this class to every object that needs to consult keyboard state.
So, in player.update(), yes, reference those variables. As long as you never write to these variables from anywhere except the implementation of KeyPress, KeyRelease, etc., it seems to me they are ok as public variables. Or to be safe, only write a get() and no set() and make the variables private. It might be good to make the variables volatile, but this is where things get a little hazy for me.
This Keyboard class itself wouldn’t have to be called by update(). The ‘up’ and ‘down’ (and ‘left’ and ‘right’ or whatever) variables are updated asynchronously, when the KeyListener implementation methods run (when the keys are pressed).
OK, just thought of an exception. There might be some sort of game state occurrence that triggers where you’d want the keys to do something different. Message that to the Keyboard class via settable variables in the class, and consult them as needed (might be either via a game-loop update cycle or when the KeyPress/Release methods execute).