接口作为返回类型与类作为返回类型一样吗?

LinkedList<Integer> q = new LinkedList<>();和Queue<Integer> q = new LinkedList<>();一样吗?

我现在想创建一个队列对象,正常情况下我会这样写:Queue<Integer> q = new Queue<>();

但是你仔细想想,这样写真的对吗?

Queue是接口,但是接口是不能实例化一个对象的

那怎么办?

先看看LinkedList部分源代码

java 复制代码
public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

可以看到 LinkedList实现了Deque(Deque继承了Queue),所以可以用LinkedList类实例化一个对象,而返回类型仍然是Queue接口,这样就创建好了一个队列(java创建一个队列理解起来真tm麻烦,还不如用c++呢)

相关推荐
吾好梦中写代码几秒前
Redis——缓存
java·redis·缓存
二月夜1 分钟前
Maven 常用命令完整版速查表
java·maven
砍材农夫7 分钟前
spring-ai 第十tool调用
java·人工智能·spring
aaa最北边10 分钟前
计算机网络-断开连接的四次挥手底层细节
java·网络·计算机网络
java叶新东老师10 分钟前
解决jetbrains idea 自带终端无法加载windows系统环境变量
java·windows·intellij-idea
大G的笔记本11 分钟前
Java WebSocket客户端--java.net.http.HttpClient
java·websocket·.net
我是李龙11 分钟前
第二十一章 项目启动与治理架构:从招标到甲乙方协作机制的建立
java·架构·devops
Mem0rin11 分钟前
[Java/数据结构]树的基本概念、二叉树的创建和遍历
java·开发语言·数据结构
rannn_11113 分钟前
【Redis|高级篇2】多级缓存|JVM进程缓存、Lua语法、多级缓存实现(OpenResty)、缓存同步(Canal)
java·redis·分布式·后端·缓存·lua·openresty
Lyyaoo.15 分钟前
【JAVA基础面经】CAS 与 ABA
java·开发语言