栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java-从接口类型而不是类声明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-从接口类型而不是类声明

如果可以通过“ a”

interface
或“ a” 来引用对象
class
,则应首选后者,但前提是存在适当的类型。

考虑作为一个例子。你不应该只是一味地用在preferrence到所有情况,因为这会剥夺你喜欢简单的操作,等等。

StringimplementsCharSequenceCharSequenceStringtrim()toUpperCase()

但是,应该改用String仅关心char值序列的方法,因为在这种情况下,这是合适的类型。实际上,在课堂上就是这种情况。

CharSequencereplace(CharSequence target, CharSequence replacement)String

另一个例子是

java.util.regex.Pattern
它的
Matcher matcher(CharSequence)
方法。这样一
Matcher
Pattern
,不仅可以为创建
String
,而且还可以为所有其他创建的对象
CharSequence

可以在以下位置找到库中一个很好的示例,该示例中

interface
应该使用a,但不幸的是没有使用
a Matcher
:它的
appendReplacement
appendTail方
法仅接受
StringBuffer。StringBuilder
从1.5 开始,该类别已被其更快的表亲取代。

A StringBuilder
不是
a StringBuffer
,因此我们不能将前者与中的
append…
方法一起使用Matcher。但是,它们两者
implementsAppendable
(也在1.5中引入)。理想情况下
Matcher
,的
append…
方法应该接受any Appendable,然后我们就可以使用
StringBuilder
,以及所有其他
Appendable
可用的方法!

因此,我们可以看到,当存在适当类型时,如何通过它们的接口引用对象可以成为强大的抽象,但是前提是这些类型存在。如果类型不存在,则可以考虑定义自己的类型。

Cat
例如,在此示例中,你可以定义
interface SelfBathable
。然后
Cat
,你可以接受任何
SelfBathable
对象(例如
Parakeet
),而不是引用a

如果创建新类型没有意义,那么你可以通过其引用它class。

也可以看看
- 有效的Java 2nd Edition,项目52:通过其接口引用对象
如果存在适当的接口类型,则应使用接口类型声明参数,返回值和字段。如果你习惯使用接口类型,那么你的程序将更加灵活。如果不存在适当的接口,则完全可以通过类来引用对象。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441950.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号