Java 我应该投什么类型的?

Java 我应该投什么类型的?,java,oop,Java,Oop,我有一个带有方法的form类: IText getSearchField() IText接口是由名为MyTextField的JTextField的子类实现的 由于我无法控制的原因,我无法从表单类中获取控件,该表单类的类型为MyTextField、asJTextField、组件,或者MyTextField类型层次结构中的任何其他内容 我正在从驱动程序对象访问表单类对象,希望驱动程序将焦点设置到getSearchField()调用检索到的搜索字段上 我可以使用组件类的requestFocusInW

我有一个带有方法的form类:

IText getSearchField()
IText
接口是由名为
MyTextField
JTextField
的子类实现的

由于我无法控制的原因,我无法从表单类中获取控件,该表单类的类型为
MyTextField
、as
JTextField
组件
,或者
MyTextField
类型层次结构中的任何其他内容

我正在从驱动程序对象访问表单类对象,希望驱动程序将焦点设置到
getSearchField()
调用检索到的搜索字段上

我可以使用
组件
类的
requestFocusInWindow()
方法来实现这一点。但是,首先我需要将
getSearchField()
调用的结果强制转换为
MyTextField
类型层次结构中的某个对象,因为对
getSearchField()
的调用返回一个
IText

我的问题是,我应该转换到
MyTextField
?到
组件
?在两者之间


为什么??哪一个最快

按您需要的最不具体的方式进行转换。也就是说,如果A是B的超类,并且您只需要从A转换到A的方法。如果您还需要从B转换到B的方法


哪一个最快?你为什么问这个?这不会有什么不同。

根据您需要的最不具体的内容进行转换。也就是说,如果A是B的超类,并且您只需要从A转换到A的方法。如果您还需要从B转换到B的方法


哪一个最快?你为什么问这个?这不会有什么区别。

那么这是否意味着无论您将强制转换为何种类型,强制转换总是以相同的速度进行?强制转换的成本惊人,因为JVM必须在运行时验证强制转换是否确实合法。但是,如果运行时间上有显著的差异取决于您将它投给什么,我会非常惊讶。这对基准测试来说是很有趣的。在任何情况下,可维护性都比微小的性能提升更重要,即使有。那么,这是否意味着无论您将强制转换为何种类型,强制转换总是以相同的速度进行?好吧,强制转换非常昂贵,因为JVM必须在运行时验证强制转换是否确实合法。但是,如果运行时间上有显著的差异取决于您将它投给什么,我会非常惊讶。这对基准测试来说是很有趣的。在任何情况下,可维护性都比微小的性能提升更重要,即使有。