java琐碎知识点记录

java多态

多态的优点:消除类型之间的耦合关系,类型之间的耦合关系是什么?

在软件开发中,类型之间的耦合关系指的是一个类型对其他类型的依赖程度。当一个类型依赖于其他类型时,它们之间形成了耦合关系。耦合度高意味着一个类型的修改可能会影响到其他相关类型,导致代码的脆弱性,增加了维护的难度。

代码分析

Set<ListNode> visited = new HashSet<ListNode>();

这行代码使用了Java的泛型语法来创建一个HashSet集合。

泛型是Java中的一种强类型机制,它允许在定义类、接口或方法时使用参数化类型。使用泛型可以在编译时强制指定集合中存储的元素类型,从而提高代码的类型安全性和可读性。

语法解释

Set:Set 是Java集合框架中的接口,表示一个不包含重复元素的集合。 使用了泛型语法,表示该集合中存储的元素类型是 ListNode 类型。
visited:这是一个变量名,用于存储创建的HashSet对象。
new HashSet():这部分是创建一个新的HashSet对象的语法。HashSet 是Set接口的实现类,用于表示无序、不重复的集合。在这里,我们使用了new关键字来创建一个新的HashSet对象,并在尖括号中指定元素的类型为 ListNode。通过这个语法,我们创建了一个用于存储 ListNode 对象的 HashSet 集合。
综合起来,这行代码的意思是创建一个新的 HashSet 集合,用于存储 ListNode 类型的对象,并将这个集合赋值给名为 visited 的变量。

为什么前面用set而不是用hashset?
在 Java 中,Set 是一个接口,而 HashSet 是 Set 接口的一个具体实现类。当我们定义一个变量时,我们通常倾向于使用接口而不是具体的实现类来声明变量,这符合编程中的一个通用原则——“面向接口编程”(Programming to an interface)。
面向接口编程是一种设计原则,推荐在代码中使用接口类型作为变量的声明,而不是使用具体的实现类。这样做的好处有:

降低代码的耦合度:使用接口类型声明变量可以将具体的实现类与调用代码解耦,使代码更加灵活和可扩展。
提高代码的可维护性:如果需要替换 HashSet 为其他实现类,只需修改一行代码,将 HashSet 替换为其他实现类即可,而不需要修改大量的调用代码。
抽象和通用性:使用接口类型声明变量强调了代码中的抽象概念,使代码更具通用性和可读性。
因此,虽然在这行代码中使用 Set visited 和 HashSet visited 都可以正确创建一个存储 ListNode 对象的集合,但为了遵循面向接口编程原则,推荐使用 Set 接口类型来声明变量。这样可以使代码更加灵活、可维护和通用。同时,在具体实例化对象时,仍然使用 new HashSet() 来创建一个 HashSet 集合的实例。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值