Spec-Zone.ru › OpenJDK 8

Класс Разрешение

  • java.lang.Object
    • java.security.Permission
Все реализованные интерфейсы:
Serializable, Guard
Прямые известные подклассы:
AllPermission, BasicPermission, FilePermission, MBeanPermission, PrivateCredentialPermission, ServicePermission, SocketPermission, UnresolvedPermission, URLPermission

public abstract class Permission
extends Object
implements Guard, Serializable

Абстрактный класс для представления доступа к системному ресурсу. Все разрешения имеют имя (интерпретация которого зависит от подкласса), а также абстрактные функции для определения семантики конкретного подкласса разрешений.

Большинство объектов разрешений также включают список «действий», который указывает разрешённые действия для объекта. Например, для объекта java.io.FilePermission, имя разрешения — это путь к файлу (или каталогу), а список действий (например, «чтение, запись») определяет, какие действия разрешены для указанного файла (или для файлов в указанном каталоге). Список действий является необязательным для объектов разрешений, таких как java.lang.RuntimePermission, которым такой список не нужен; либо у вас есть указанное разрешение (например, «system.exit»), либо нет.

Важный метод, который должен быть реализован каждым подклассом, — это метод implies для сравнения разрешений. В основе лежит понятие «разрешение p1 подразумевает разрешение p2»: если у вас есть разрешение p1, то вы также естественным образом получаете разрешение p2. Таким образом, это не проверка на равенство, а скорее проверка на подмножество.

Объекты разрешений аналогичны строкам в том, что они неизменяемы после создания. Подклассы не должны предоставлять методы, которые могут изменить состояние разрешения после его создания.

См. также:
Permissions, PermissionCollection, Сериализованная форма

Конструкторы

Конструктор и описание
Permission(String name)

Конструктор разрешения с указанным именем.

Методы

Модификатор и тип Метод и описание
void checkGuard(Object object)

Реализует интерфейс стража для разрешения.

abstract boolean equals(Object obj)

Проверяет два объекта разрешения на равенство.

abstract String getActions()

Возвращает действия в виде строки.

String getName()

Возвращает имя этого разрешения.

abstract int hashCode()

Возвращает хеш-код для этого объекта разрешения.

abstract boolean implies(Permission permission)

Проверяет, являются ли действия указанного разрешения «подмножеством» действий этого объекта.

PermissionCollection newPermissionCollection()

Возвращает пустой PermissionCollection для данного объекта разрешения или null, если он не определён.

String toString()

Возвращает строку, описывающую это разрешение.

Методы, унаследованные от класса java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Конструкторы

Permission

public Permission(String name)

Конструктор разрешения с указанным именем.

Параметры:
name - имя создаваемого объекта разрешения.

Методы

checkGuard

public void checkGuard(Object object)
                throws SecurityException

Реализует интерфейс стража для разрешения. Метод SecurityManager.checkPermission вызывается, передавая этот объект разрешения как разрешение для проверки. Возвращает без ошибок, если доступ предоставлен. В противном случае выбрасывает SecurityException.

Указано в:
checkGuard в интерфейсе Guard
Параметры:
object - объект, который охраняется (в настоящее время игнорируется).
Исключения:
SecurityException - если существует менеджер безопасности и его метод checkPermission не разрешает доступ.
См. также:
Guard, GuardedObject, SecurityManager.checkPermission(java.security.Permission)

implies

public abstract boolean implies(Permission permission)

Проверяет, являются ли действия указанного разрешения «подмножеством» действий этого объекта.

Это должно быть реализовано подклассами разрешения, так как только они могут наложить семантику на объект разрешения.

Метод implies используется классом AccessController для определения того, подразумевается ли запрошенное разрешение другим разрешением, которое известно как допустимое в текущем контексте выполнения.

Параметры:
permission - разрешение для проверки.
Возвращает:
true, если указанное разрешение подразумевается этим объектом, false — если нет.

equals

public abstract boolean equals(Object obj)

Проверяет два объекта разрешения на равенство.

Не используйте метод equals для принятия решений об управлении доступом; используйте метод implies.

Переопределяет:
equals в классе Object
Параметры:
obj - объект, с которым проверяется равенство.
Возвращает:
true, если оба объекта разрешения эквивалентны.
См. также:
Object.hashCode(), HashMap

hashCode

public abstract int hashCode()

Возвращает хеш-код для этого объекта разрешения.

Требуемое поведение для объектов разрешений:

  • При каждом вызове на одном и том же объекте разрешения более одного раза во время выполнения Java-приложения метод hashCode должен последовательно возвращать одно и то же целое число. Это целое число не обязательно должно оставаться постоянным от одного выполнения приложения к другому.
  • Если два объекта разрешения равны в соответствии с методом equals, то вызов метода hashCode для каждого из двух объектов разрешения должен возвращать одинаковый результат.
Переопределяет:
hashCode в классе Object
Возвращает:
хеш-код для этого объекта.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

getName

public final String getName()

Возвращает имя этого разрешения. Например, в случае java.io.FilePermission, имя будет путём.

Возвращает:
имя этого разрешения.

getActions

public abstract String getActions()

Возвращает действия в виде строки. Это абстрактно, чтобы подклассы могли отложить создание строкового представления до необходимости. Подклассы всегда должны возвращать действия в канонической форме. Например, два объекта FilePermission, созданные следующим образом:

perm1 = new FilePermission(p1,"read,write");
   perm2 = new FilePermission(p2,"write,read");
, оба возвращают «чтение, запись», когда вызывается метод getActions.

Возвращает:
действия этого разрешения.

newPermissionCollection

public PermissionCollection newPermissionCollection()

Возвращает пустой PermissionCollection для данного объекта разрешения или null, если он не определён. Подклассы класса Permission должны переопределять этот метод, если им нужно хранить свои разрешения в определённом объекте PermissionCollection, чтобы обеспечить правильную семантику при вызове метода PermissionCollection.implies. Если возвращается null, то вызывающий метод свободен хранить разрешения этого типа в любом PermissionCollection (использующий Hashtable, Vector и т. д.).

Возвращает:
новый объект PermissionCollection для этого типа разрешения или null, если он не определён.

toString

public String toString()

Возвращает строку, описывающую это разрешение. Соглашение состоит в том, чтобы указать имя класса, имя разрешения и действия в формате: '("ClassName" "name" "actions")', или '("ClassName" "name")', если список действий равен null или пуст.

Переопределяет:
toString в классе Object
Возвращает:
информация об этом разрешении.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API