To eliminate the unchecked cast warning, use a list instead of an array. Here is a version of the Chooser class that compiles without error or warning:
Funnily enough, you haven't eliminated the problem, you've simply transferred the problem to ArrayList. That's still good as you've moved the problem in capable hands.
You do also trade for another caveat, too: It's possible to use a list that doesn't support random access; i.e., you can trade the type safety concern for the possibility of accidental performance problem (for O(n) rather than O(1)).