это потому, что вы пытаетесь проверить свойство из неинициализированной переменной. Попробуйте это контролировать, если у вас есть переменная прав доступа и аргумент, переданный функции, не равен нулю:
public boolean isPermissable(Permission p) {
boolean exit = false;
if((permission != null) && (p != null)){
exit = permission.contains(p);
}
return exit;
}
В любом случае, я рекомендую вам создать пустой конструктор для вашего класса и инициализировать все переменные
PermissionList(){
permission = new HashSet();
}
EDIT
Я только что нашел странную вещь в вашем коде. Здесь
public PermissionList(String permissionID) {
if (permissionID == null) {
this.permission = new HashSet<Permission>();
}
}
Вы никогда не инициализируете свое свойство разрешения, если только вы не вызовете конструктор таким образом: PermissionList myPermission = PermissionList(null)
, потому что у вас нет пустого конструктора, такого как PermissionList myPermission = PermissionList()
, и любая строка, которую вы передадите как accessID, не будет нулевой.
Почему вы используете аргумент allowID? Где вы храните это?
Вот почему вы получаете NPE, когда вы называете this.permission в своем коде. Вы никогда не инициализируете свойство разрешения.