Сценарий:long primitive NaN value
1) У меня есть длинная переменная состояния, которая может быть установлена или не установлена.
2) Эта длинные переменные имеют действительные значения от Long.MIN_VALUE до Long.MAX_VALUE включая нулевую
3) Это производительность чувствительный код, так что я не хочу использовать длинный тип-оболочку
Как я пишу 'установленный' тип проверки для этого долго? Должен ли я добавить второе логическое значение для проверки того, является ли long действительным или нет? Это кажется неряшливым. Я знаю, что могу использовать длинную оболочку здесь, но это похоже на отход производительности, который создает столько объектов и проверяет значение null.
псевдокода (это вроде того, что я хочу):
class foo {
long someLong = NaN; //NaN = hypothetical not a number like Double
public reset() {
someLong = NaN;
}
public doSomethingElse() {
if(someLong !=NaN) {
//report
reset();
}
}
public doSomeStuff() {
if(someLong == NaN) {
someLong = //something
}
}
}
}
Любые причины, по которым вы не хотите использовать Boolean для чего-либо, установленного или не настроенного? – JAM
Просто используйте дополнительные булевы для set/not set. – Ryan
Хорошо, круто. Спасибо за перепись. Логическое здесь похоже на правильное решение. Я просто думаю, что это не самый читаемый и вне конвенции, который вы видите для других типов (например, Object: null, double: NaN), но производительность гарантирует это в этом случае. –