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); } }