抽象的java枚举

dea*_*mon 9 java enums abstract-class

我编写了一个应该依赖枚举的库,但实际的枚举应该由我的库的用户定义.

在以下示例中,该authorize方法需要枚举类型的参数Permission.

acl.authorize(userX, Permission.READ, Permission.WRITE)
Run Code Online (Sandbox Code Playgroud)

我的库应该能够处理库用户定义的任意权限.但是如果没有Permission枚举我就无法编译我的库.所以我需要类似的东西

abstract enum Permission
Run Code Online (Sandbox Code Playgroud)

在我的图书馆.有没有解决方法来做到这一点?

Ste*_*een 21

我会使用枚举然后实现的接口.有点像

public interface PermissionType{}
Run Code Online (Sandbox Code Playgroud)

例如,客户端将使用它来定义诸如的枚举

public enum Permission implements PermissionType
[...]
Run Code Online (Sandbox Code Playgroud)

然后您的API将使用该PermissionType类型接受参数

  • @ TomHawtin-tackline:这个链接已经死了.新链接万岁:http://docs.oracle.com/javase/7/docs/api/java/nio/file/StandardCopyOption.html (3认同)