Module java.base
Package java.security

## Interface Principal

All Known Subinterfaces:
  Group, GroupPrincipal, UserPrincipal

All Known Implementing Classes:
  Identity, IdentityScope, JMXPrincipal, KerberosPrincipal, Signer, 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.

See Also:
  `X509Certificate`

### Method Summary

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