【发布时间】:2012-11-27 07:47:35
【问题描述】:
这个问题更多是关于良好的编程实践和设计决策,但它以构造函数中的switch 为中心。
想法是以各种方式处理默认行为。默认构造函数 (Const()) 处理最简单或最常见的情况,参数化构造函数 (Const(int type)) 使用 switch 枚举其他特定情况。
为了保存一些代码,我可以在 case: 0 中定义默认构造函数,然后我可以从基本构造函数中引用它,如下所示:Const() { this(0); }(否则我无法这样做(即参考基本构造函数switch case),因为编译器要求一个且只有一个对另一个构造函数的引用作为第一条语句)。
但我也希望能够通过将default: case 发送到case: 0 来处理参数化构造函数中的错误输入(可能与错误消息相结合,例如“Invalid case.Using default case (0) instead.” ) 或反之,以使其更健壮。
我在这里搜索并阅读了其他问题(例如,请参阅 this 和 that),我可以看到在哪里可以使用某种扭曲开关直通方案来完成,但为了语义和清晰度我想首先保留默认情况,或者另一方面,是否可以通过构造函数(例如this.Const(default)或排序)引用默认语句?可以做到吗?如果可以,从哲学上讲,解决这个问题的最佳方法是什么?
【问题讨论】:
-
Const(int type)不是重写构造函数,它是参数化构造函数。
标签: java switch-statement