Principal (Java SE 10 & JDK 10 )
Keywords: java.security.Principal interface

Module java.base
Package java.security

## Interface Principal

- All Known Subinterfaces:
    `Group`, `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

    All Methods Instance Methods Abstract Methods Default Methods
    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 Detail

    - #### 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(java.lang.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