Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于检查UI状态和强制检查每个名称的枚举_Java_Android_Enums - Fatal编程技术网

Java 用于检查UI状态和强制检查每个名称的枚举

Java 用于检查UI状态和强制检查每个名称的枚举,java,android,enums,Java,Android,Enums,我有一个Android应用程序的遗留代码,是从另一个团队传给我们的,有些代码非常需要重写,或者至少需要一些重构和清理。话虽如此,在我们的日程安排中,我们正在为下个月的发布做准备 我面临的问题是,基于一些先决条件,有一个使用系统可能具有的所有UI状态维护的枚举。这是一种实现状态机的努力。在确定状态后的每个后续屏幕上,我们都在检查开关盒中的状态,确定屏幕应该做什么,并进行文字更改。因此,我在不同的活动和片段中的代码中都有这些切换用例。我不能从switch案例中创建一个方法,因为每个屏幕都应该做一些不

我有一个Android应用程序的遗留代码,是从另一个团队传给我们的,有些代码非常需要重写,或者至少需要一些重构和清理。话虽如此,在我们的日程安排中,我们正在为下个月的发布做准备

我面临的问题是,基于一些先决条件,有一个使用系统可能具有的所有UI状态维护的枚举。这是一种实现状态机的努力。在确定状态后的每个后续屏幕上,我们都在检查开关盒中的状态,确定屏幕应该做什么,并进行文字更改。因此,我在不同的活动和片段中的代码中都有这些切换用例。我不能从switch案例中创建一个方法,因为每个屏幕都应该做一些不同的事情。如果所有屏幕都进行了相应的编码,那么一切都会正常工作,但当我们有一个新的UI状态时,问题就开始了。我们将状态添加到枚举中,但队友有时会忘记在各自的代码中检查新状态,基本上是在他们的活动/片段中的开关盒中添加新状态,这会导致错误。有没有一种方法可以通过代码强制执行这种检查,就像接口方法需要由实现类实现一样?如果添加了一个新状态,代码中就会出现编译错误。如果这是可以实现的使用不同的数据结构,我将作出改变。 此时的枚举只是一个常规枚举,如

public static enum UIStates{
PASSWORD_UNKNOWN,
CANCEL,
FAILURE,
SKIP,
DEVICE_UNKNOWN,
...
...
... 22 other states
}

如果删除了交换机中的默认情况,编译器将强制您考虑所有的情况。这可能是一种可能性,如果我正确理解了您的问题,但即使您以某种方式强制检查所有活动,您仍然必须提供不同的代码来处理每个状态,正如您所说的,每个活动都有自己的行为,因此我认为您不能这样做that@njzk2-Eclipse和编译时警告是可能的,我认为必须显式打开该设置。我们使用androidstudio进行开发,我找不到这个选项,而且它在默认的编译器警告/错误规则中也不起作用,不管它们是在哪里设置的。谢谢你的回答,我很感谢你,但我一直在寻找一个万无一失的解决方案。如果有人忘记更改编译器选项或恢复其设置,我们最终还是会遇到bug。我想您可以在持续集成服务器的编译器上使用该选项。@Mahmoud.M-这就是全部想法。我希望提供明确的代码,以便以正确的方式处理特定的情况。我试图避免出现bug,因为我们已经违约了。我宁愿有编译错误,以便引起人们的注意,而不是有bug。谢谢你的调查。