I'm doing something that should be trivial- retrieving an enum value from a property and comparing it with a constant of that enum in an if statement. However Android Studio claims the true case is unreachable code and won't compile.
The block is:
if (ScanState.getScanMode() != ScanState.ScanModeEnum.SCAN_IDLE)
{
    //We're already scanning, but user wants to stop.
    stopScanning();
}
else
{
    ScanState.setScanMode(newMode);
    restartScan();
    buttonFlashMode = btnMode;
    buttonFlasher();
}
where in an extra ScanState class, I have:
public static ScanModeEnum getScanMode() {
    return scanMode;
}
public static void setScanMode(ScanModeEnum scanMode) {
    ScanState.scanMode = scanMode;
}
public enum ScanModeEnum
{
    SCAN_IDLE,
    SCAN_PERSON,
    SCAN_BIKE,
    SCAN_SEARCH
}
private static ScanModeEnum scanMode = ScanModeEnum.SCAN_IDLE;
Variants I've tried, which Android Studio claims will all evaluate to false are
if(ScanState.getScanMode() == ScanState.ScanModeEnum.SCAN_IDLE)
if(ScanState.getScanMode().compareTo(ScanState.ScanModeEnum.SCAN_IDLE)!=0)
if(ScanState.ScanModeEnum.SCAN_IDLE == ScanState.ScanModeEnum.SCAN_IDLE)
if(ScanState.ScanModeEnum.SCAN_IDLE.equals(ScanState.ScanModeEnum.SCAN_IDLE))
I'm new to Java (more familiar with C#), but an answer to this question suggests that my understanding of this is sound. Is there some stupid mistake I'm making?
 
     
     
    