ChoiceCallback (Java SE 25 & JDK 25)
Description: declaration: module: java.base, package: javax.security.auth.callback, class: ChoiceCallback
Keywords: javax.security.auth.callback.ChoiceCallback class

# Class ChoiceCallback

java.lang.Object
javax.security.auth.callback.ChoiceCallback

All Implemented Interfaces:
  `Serializable, Callback`

Direct Known Subclasses:
  `RealmChoiceCallback`

public class ChoiceCallback extends Object implements Callback, Serializable

Underlying security services instantiate and pass a `ChoiceCallback` to the `handle` method of a `CallbackHandler` to display a list of choices and to retrieve the selected choice(s).

Since:
  1.4
See Also:
  - `CallbackHandler`
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ChoiceCallback(String prompt, String[] choices, int defaultChoice, boolean multipleSelectionsAllowed)`
  Construct a `ChoiceCallback` with a prompt, a list of choices, a default choice, and a boolean specifying whether multiple selections from the list of choices are allowed.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `allowMultipleSelections()`
  Get the boolean determining whether multiple selections from the `choices` list are allowed.
  `String[]`
  `getChoices()`
  Get the list of choices.
  `int`
  `getDefaultChoice()`
  Get the defaultChoice.
  `String`
  `getPrompt()`
  Get the prompt.
  `int[]`
  `getSelectedIndexes()`
  Get the selected choices.
  `void`
  `setSelectedIndex(int selection)`
  Set the selected choice.
  `void`
  `setSelectedIndexes(int[] selections)`
  Set the selected choices.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ChoiceCallback

    public ChoiceCallback(String prompt, String[] choices, int defaultChoice, boolean multipleSelectionsAllowed)
    Construct a `ChoiceCallback` with a prompt, a list of choices, a default choice, and a boolean specifying whether multiple selections from the list of choices are allowed.
    Parameters:
      `prompt` - the prompt used to describe the list of choices.
      `choices` - the list of choices. The array is cloned to protect against subsequent modification.
      `defaultChoice` - the choice to be used as the default choice when the list of choices are displayed. This value is represented as an index into the `choices` array.
      `multipleSelectionsAllowed` - boolean specifying whether multiple selections can be made from the list of choices.
    Throws:
      `IllegalArgumentException` - if `prompt` is null, if `prompt` has a length of 0, if `choices` is null, if `choices` has a length of 0, if any element from `choices` is null, if any element from `choices` has a length of 0 or if `defaultChoice` does not fall within the array boundaries of `choices`.

- ## Method Details

  - ### getPrompt

    public String getPrompt()
    Get the prompt.
    Returns:
      the prompt.

  - ### getChoices

    public String[] getChoices()
    Get the list of choices.
    Returns:
      a copy of the list of choices.

  - ### getDefaultChoice

    public int getDefaultChoice()
    Get the defaultChoice.
    Returns:
      the defaultChoice, represented as an index into the `choices` list.

  - ### allowMultipleSelections

    public boolean allowMultipleSelections()
    Get the boolean determining whether multiple selections from the `choices` list are allowed.
    Returns:
      whether multiple selections are allowed.

  - ### setSelectedIndex

    public void setSelectedIndex(int selection)
    Set the selected choice.
    Parameters:
      `selection` - the selection represented as an index into the `choices` list.
    See Also:
      - `getSelectedIndexes()`

  - ### setSelectedIndexes

    public void setSelectedIndexes(int[] selections)
    Set the selected choices.
    Parameters:
      `selections` - the selections represented as indexes into the `choices` list. The array is cloned to protect against subsequent modification.
    Throws:
      `UnsupportedOperationException` - if multiple selections are not allowed, as determined by `allowMultipleSelections`.
    See Also:
      - `getSelectedIndexes()`

  - ### getSelectedIndexes

    public int[] getSelectedIndexes()
    Get the selected choices.
    Returns:
      a copy of the selected choices, represented as indexes into the `choices` list.
    See Also:
      - `setSelectedIndexes(int[])`