Класс Разрешение
- java.lang.Object
- java.security.Permission
- Все реализуемые интерфейсы:
-
Serializable,Guard
- Прямые известные подклассы:
-
AllPermission,BasicPermission,CardPermission,FilePermission,MBeanPermission,PrivateCredentialPermission,ServicePermission,SocketPermission,UnresolvedPermission,URLPermission
public abstract class Permission extends Object implements Guard, Serializable
Абстрактный класс для представления доступа к системному ресурсу. Все разрешения имеют имя (интерпретация которого зависит от подкласса), а также абстрактные функции для определения семантики конкретного подкласса Permission.
Большинство объектов Permission также включают список «действий», который указывает разрешенные действия для объекта. Например, для объекта java.io.FilePermission, имя разрешения — это путь к файлу (или каталогу), а список действий (например, «чтение, запись») определяет, какие действия разрешены для указанного файла (или для файлов в указанном каталоге). Список действий необязателен для объектов Permission, таких как java.lang.RuntimePermission, которым такой список не требуется; у вас есть либо именованное разрешение (например, «system.exit»), либо его нет.
Важный метод, который должен быть реализован каждым подклассом, — метод implies для сравнения разрешений. В основном, «разрешение p1 подразумевает разрешение p2» означает, что если у вас есть разрешение p1, то вы естественным образом получаете разрешение p2. Таким образом, это не проверка на равенство, а скорее проверка на подмножество.
Объекты Permission аналогичны объектам String в том, что они неизменяемы после создания. Подклассы не должны предоставлять методы, которые могут изменить состояние разрешения после его создания.
- С момента:
- 1.2
- См. также:
-
Permissions,PermissionCollection, Сериализованная форма
Конструкторы
| Конструктор | Описание |
|---|---|
Permission(String name) | Создает разрешение с указанным именем. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | checkGuard(Object object) | Реализует интерфейс стража для разрешения. |
abstract boolean | equals(Object obj) | Проверяет два объекта Permission на равенство. |
abstract String | getActions() | Возвращает действия в виде строки. |
String | getName() | Возвращает имя этого разрешения. |
abstract int | hashCode() | Возвращает значение хэш-кода для этого объекта Permission. |
abstract boolean | implies(Permission permission) | Проверяет, подразумеваются ли действия указанного разрешения действиями этого объекта. |
PermissionCollection | newPermissionCollection() | Возвращает пустую PermissionCollection для данного объекта Permission или null, если она не определена. |
String | toString() | Возвращает строку, описывающую это разрешение. |
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitКонструкторы
Permission
public Permission(String name)
Создает разрешение с указанным именем.
- Параметры:
-
name- имя объекта Permission, который создается.
Методы
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)
Проверяет, подразумеваются ли действия указанного разрешения действиями этого объекта.
Это должно быть реализовано подклассами Permission, так как только они могут наложить семантику на объект Permission.
Метод implies используется AccessController для определения того, подразумевается ли запрошенное разрешение другим разрешением, которое известно как действительное в текущем контексте выполнения.
- Параметры:
-
permission- разрешение для проверки. - Возвращает:
- true, если указанное разрешение подразумевается этим объектом, false — если нет.
equals
public abstract boolean equals(Object obj)
Проверяет два объекта Permission на равенство.
Не используйте метод equals для принятия решений по контролю доступа; используйте метод implies.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект, с которым проверяется равенство. - Возвращает:
- true, если оба объекта Permission эквивалентны.
- См. также:
-
Object.hashCode(),HashMap
hashCode
public abstract int hashCode()
Возвращает значение хэш-кода для этого объекта Permission.
Требуемое поведение hashCode для объектов Permission следующее:
- Всякий раз, когда он вызывается на одном объекте Permission более одного раза во время выполнения Java-приложения, метод
hashCodeдолжен последовательно возвращать одно и то же целое число. Это целое число не обязательно должно оставаться постоянным от одного выполнения приложения к другому выполнению того же приложения. - Если два объекта Permission равны согласно методу
equals, то вызов методаhashCodeна каждом из двух объектов Permission должен давать один и тот же результат.
- Переопределяет:
-
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");, оба возвращают «read,write», когда вызывается метод
getActions.- Возвращает:
- действия этого разрешения.
newPermissionCollection
public PermissionCollection newPermissionCollection()
Возвращает пустую PermissionCollection для данного объекта Permission или null, если она не определена. Подклассы класса Permission должны переопределить это, если им нужно хранить свои разрешения в определенном объекте PermissionCollection, чтобы обеспечить правильную семантику при вызове метода PermissionCollection.implies. Если возвращается null, то вызывающий метод свободен хранить разрешения этого типа в любой PermissionCollection, которую он выберет (такую, которая использует Hashtable, такую, которая использует Vector и т.д.).
- Возвращает:
- новый объект PermissionCollection для этого типа разрешения или null, если он не определен.
toString
public String toString()
Возвращает строку, описывающую это разрешение. Принято указывать имя класса, имя разрешения и действия в следующем формате: '("ClassName" "name" "actions")', или '("ClassName" "name")', если список действий null или пуст.
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/Permission.html