cor*_*fon 1 java class switch-statement
在搜索了SO和网络之后,我还没有在Java中找到答案.这很简单.
我有抽象类ParentClass.类X和类Y都继承自ParentClass.我也有类DataInputDialog extends JDialog,这是为了提供一个用户界面,用于将数据输入到类X和类Y实例中.DataInputDialog类如下所示:
public class DataInputDialog extends JDialog {
public DataInputDialog(ParentClass xOrY) {
//calls super constructor, makes basic components such as
// buttons and panels that are used in either X or Y data entry
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想要一个switch声明来确定ParentClass传递给哪种类型的声明DataInputDialog.但是,我不知道如何实现这一目标.我试过了:
switch (xOrY.getClass().getTypeName()) {
case X.class.getTypeName();
}
Run Code Online (Sandbox Code Playgroud)
还有其他一些变体,但它总是在case语句中出现一个错误:它必须是一个常量String,或者它不能转换为整数.
如何获取此switch语句以确定是否xOrY是X或的实例Y?
要使开关工作,该值必须是原始值,String或Enum值.在OO代码中,switch语句具有代码味道; 通常表明你错过了使用多态的机会.
在函数式语言中,您可以使用case语句来执行您正在尝试的操作.
Java是OO所以我会利用多态性,你会有一个更清洁的设计.
多态性
是一个OO概念,基本上说如果一个是另一个的超集,那么两个对象/类可以被认为是"BE"相同.也就是说,如果对象/类满足IS-A关系.例如,如果你有一个Car类,FastCar并且VintageCar该扩展类Car都FastCar和VintageCar是Car类和因此满足IS-A的关系,因此它们可用于在代码中的任何地方,其中Car可以被调用.这里的含义是,如果Car...accelerate存在然后FastCar.accelerate存在并且可以具有不同的特征,VintageCar.accelerate因此当调用accelerate代码不需要知道子类型但将调用正确的accelerate方法时.
| 归档时间: |
|
| 查看次数: |
6171 次 |
| 最近记录: |