Principal (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.security, interface: Principal
Keywords: java.security.Principal interface

# Interface Principal

All Known Subinterfaces:
  `GroupPrincipal, UserPrincipal`

All Known Implementing Classes:
  `HttpPrincipal, Identity, IdentityScope, JMXPrincipal, KerberosPrincipal, LdapPrincipal, NTDomainPrincipal, NTSid, NTSidDomainPrincipal, NTSidGroupPrincipal, NTSidPrimaryGroupPrincipal, NTSidUserPrincipal, NTUserPrincipal, Signer, UnixNumericGroupPrincipal, UnixNumericUserPrincipal, UnixPrincipal, UserPrincipal, X500Principal`

public interface Principal
This interface represents the abstract notion of a `Principal`, which can be used to represent any entity, such as an individual, a corporation, and a login id.

Since:
  1.1
See Also:
  - `X509Certificate`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object another)`
  Compares this `Principal` to the specified object.
  `String`
  `getName()`
  Returns the name of this `Principal`.
  `int`
  `hashCode()`
  Returns a hashcode for this `Principal`.
  `default boolean`
  `implies(Subject subject)`
  Returns `true` if the specified subject is implied by this `Principal`.
  `String`
  `toString()`
  Returns a string representation of this `Principal`.

- ## Method Details

  - ### equals

    boolean equals(Object another)
    Compares this `Principal` to the specified object. Returns `true` if the object passed in matches the `Principal` represented by the implementation of this interface.
    Overrides:
      `equals` in class `Object`
    Parameters:
      `another` - `Principal` to compare with.
    Returns:
      `true` if the `Principal` passed in is the same as that encapsulated by this `Principal`, and `false` otherwise.
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### toString

    String toString()
    Returns a string representation of this `Principal`.
    Overrides:
      `toString` in class `Object`
    Returns:
      a string representation of this `Principal`.

  - ### hashCode

    int hashCode()
    Returns a hashcode for this `Principal`.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      a hashcode for this `Principal`
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(Object)`

  - ### getName

    String getName()
    Returns the name of this `Principal`.
    Returns:
      the name of this `Principal`.

  - ### implies

    default boolean implies(Subject subject)
    Returns `true` if the specified subject is implied by this `Principal`.
    Implementation Requirements:
      The default implementation of this method returns `true` if `subject` is non-null and contains at least one `Principal` that is equal to this `Principal`.

      Subclasses may override this with a different implementation, if necessary.

    Parameters:
      `subject` - the `Subject`
    Returns:
      `true` if `subject` is non-null and is implied by this `Principal`, or false otherwise.
    Since:
      1.8