Java 教程是为 JDK 8 编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅 Java 语言更改,了解 Java SE 9 及后续版本中更新的语言特性的摘要。
请参阅 JDK 发行说明,了解有关所有 JDK 版本的新功能、增强功能以及已删除或弃用选项的信息。
HighScorePermission 类定义了 ExampleGame 需要更新用户高分的权限。
所有权限类都应该从 java.security.Permission 或 java.security.BasicPermission 中的一个子类进行继承。两者之间的基本区别在于 java.security.Permission 定义了更复杂的权限,需要名称和操作。例如,java.io.FilePermission 扩展自 java.security.Permission,需要一个名称(文件名)和允许对该文件执行的操作(读取/写入/删除)。
相比之下,java.security.BasicPermission 定义了更简单的权限,只需要一个名称。例如,java.lang.RuntimePermission 扩展自 java.security.BasicPermission,只需要一个名称(如 "exitVM"),允许程序退出 Java 虚拟机。
我们的 HighScorePermission 是一个简单的权限,因此可以从 java.security.BasicPermission 中进行扩展。
通常情况下,BasicPermission 类本身的方法实现不需要被其子类重写。这对于我们的 HighScorePermission 来说也是如此,所以我们只需要实现构造函数,它只是调用超类的构造函数,如下所示:
package com.scoredev.scores;
import java.security.*;
public final class HighScorePermission extends BasicPermission {
public HighScorePermission(String name)
{
super(name);
}
// 注意,actions 被忽略并且未使用,
// 但这个构造函数仍然是必需的
public HighScorePermission(String name, String actions)
{
super(name, actions);
}
}