Przykład
public class Action {
public Action(Permission perm) {
this .rootPermission = perm;
}
private Permission rootPermission;
public void execute(CustomPermission uprawnienie) {
if (rootPermission.implies(uprawnienie)) {
//...
}
}
}


public final class CustomPermission extends BasicPermission {
public CustomPermission(String nazwa,List właściwości) {
super(nazwa);
this .properties = właściwości;
}

public boolean implies(Permission uprawnienie) {
CustomPermission perm = (CustomPermission) uprawnienie;
return perm.properties.containsAll(właściwości);
}

private List właściwości;
}
Rozwiązanie
Unikaj tworzenia nowych typów uprawnień.
public class Action {
public Action() {

}
public void execute() {
//...
}
}