我一直在我的项目中发现几个错误是由于枚举为空,而不是枚举值之一。有没有办法保证这种类型的变量总是用枚举值之一初始化,并且永远不会为空?有没有办法创建一个不能为null的枚举?
1
A
回答
4
编号枚举始终是引用类型,并且null
是任何引用类型的有效值。您可以随时写:
MyEnum x = null;
,如果您有未明确初始化实例或静态变量,它会始终默认为空。
1
这可能是通过选择Java Design By Contract系统并更改每个取得枚举的函数使其不为空来完成(非常非常痛苦)。当然,这对于现有项目来说是一项巨大的工作。
更实际的一点是,您可能会考虑将static code analysis tool集成到您的构建过程中。这也是一个很大的工作量(它可能会发现一个巨大的“bug”),但如果你有时间投资它,可能是可行的(仍然很痛苦)。正确的静态代码分析工具可能会检测到这种错误。
相关问题
- 1. 有没有办法创建一个枚举值的别名?
- 2. 有没有办法为非整数创建枚举数据类型?
- 3. 有没有办法使用Texture2D作为枚举的基础
- 4. XSD:有没有办法从名称/值对构建枚举?
- 5. 有没有办法为* any *枚举声明一个注解属性?
- 6. C#:有没有办法将一个枚举作为参数传递?
- 7. 有没有办法从一个范围创建一个非null数组?
- 8. 创建一个没有0值的C#枚举的实例
- 9. 我在一个枚举变量中设置三个枚举常量,有没有办法从枚举变量中检索枚举常量作为数组?
- 10. 有没有办法创建一个没有JS的消息框?
- 11. 有没有办法创建一个不可变(只读)的XDocument?
- 12. 有没有办法将这个枚举转换为正确的类型
- 13. 有没有办法为函数创建一个预处理宏?
- 14. 有没有办法让git为reviewboard创建一个补丁?
- 15. 有没有办法创建一个代码为
- 16. 有没有办法指定一个匿名的空可枚举类型?
- 17. 有没有办法将枚举映射到C#.NET 3.5中的另一个枚举?
- 18. 有没有办法指定python枚举的默认值?
- 19. 有没有办法让可观察的枚举Swift(KVO)
- 20. 有没有办法返回到typedef枚举的字符串?
- 21. 有没有办法如何区分使用doxygen的枚举组?
- 22. 是否有可能在C++中创建一个int +枚举?
- 23. 有没有办法判断一个枚举是否只有一个,多个或不设置标志?
- 24. 有没有办法枚举所有的属性,并逐一释放它们?
- 25. 如何为pageControl.currentPage创建一个枚举?
- 26. 从有状态算法创建一个枚举器
- 27. 有没有办法使用Doctrine 2检索枚举值?
- 28. 有没有办法通过枚举在Rust中索引数组?
- 29. 有没有什么办法可以在Python中定义枚举?
- 30. 有没有办法创建一个分组的命名范围?