加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如果我需要序列化,我应该使用具体的List(例如ArrayList)还是(Ser

发布时间:2020-12-14 19:15:21 所属栏目:Java 来源:网络整理
导读:我们在办公室进行了讨论,无法理解哪种方法更好 我有一个类(SomeClass)和一些接收Serializable对象的方法.签名如下: public void someMethod(Serializable serializableObject){ ...} 我需要从另一个类调用此方法,但我应该为它提供一些List作为事实参数.有两

我们在办公室进行了讨论,无法理解哪种方法更好

我有一个类(SomeClass)和一些接收Serializable对象的方法.签名如下:

public void someMethod(Serializable serializableObject){
    ...
}

我需要从另一个类调用此方法,但我应该为它提供一些List作为事实参数.有两种不同的方法

1.可序列化

private SomeClass someClass;

public void doSomething() {
    List

2. ArrayList

private SomeClass someClass;

public void doSomething() {
    ArrayList

>第一个例子的好处是它坚持java的最佳实践,它说:使用接口而不是具体实现参考类型和任何程序员,同时阅读该源将理解我们不需要ArrayList的特殊行为.并且我们需要它的唯一可行序列化行为是通过将其转换为Serializable接口来添加此行为.程序员可以简单地将List的当前实现更改为其他一些可序列化的实现,例如LinkedList,对此元素没有任何副作用,因为我们使用接口List作为它的引用类型.
>第二个示例的好处是我们将ArrayList称为类,它不仅具有List行为,还具有Seri??alizable行为.因此,如果有人查看此代码并尝试将ArrayList更改为List,则会收到编译时错误,这会减少程序员理解其中发生的事情的时间

更新:我们无法更改someMethod签名.它来自第三方公司,我们不仅将它用于Serializable Lists,还用于Strings,Integers和其他一些Serializable对象

最佳答案
当您需要的只是接口提供的方法时,您应该使用接口. (这是大多数情况)但是,如果您需要多个接口,则可以使用泛型,但最简单的方法是使用具体类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读