Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Это должно сделать это:
private enum Alignment { LEFT, RIGHT };
String drawCellValue (int maxCellLength, String cellValue, Alignment align){
if (align == Alignment.LEFT)
{
//Process it...
}
}
Еще более прохладный с перечислениями можно использовать переключатель:
switch (align) {
case LEFT: {
// do stuff
break;
}
case RIGHT: {
// do stuff
break;
}
default: { //added TOP_RIGHT but forgot about it?
throw new IllegalArgumentException("Can't yet handle " + align);
}
}
Перечисления прохладны, потому что вывод исключения будет названием перечисления значений, а не некоторым произвольным международным значением.
Мне нравится это намного лучше. уменьшает, если/переключатель, просто сделайте.
private enum Alignment { LEFT, RIGHT;
void process() {
//Process it...
}
};
String drawCellValue (int maxCellLength, String cellValue, Alignment align){
align.process();
}
, конечно, это может быть:
String process(...) {
//Process it...
}
Несомненно, Вы могли использовать перечисление. Что-то хотело бы следующую работу?
enum Alignment {
LEFT,
RIGHT
}
частная статическая Строка drawCellValue (интервал maxCellLength, Строковое значение ячейки, выравнивание Выравнивания) {}
, Если Вы хотели использовать булевскую переменную, Вы могли бы переименовать выровнять параметр к чему-то как alignLeft. Я соглашаюсь, что эта реализация не является столь же чистой, но если Вы не ожидаете много изменений, и это не открытый интерфейс, это мог бы быть хороший выбор.
Вы могли также снова использовать SwingConstants. {ЛЕВЫЙ, ПРАВИЛЬНЫЙ}. Они не перечисления, но они действительно уже существуют и используются во многих местах.