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

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++呢)

相关推荐
袁慎建@ThoughtWorks30 分钟前
ThreadLocal那些事儿
java·jdk·多线程·threadlocal
专注于大数据技术栈38 分钟前
java学习--HashSet
java·学习·哈希算法
菜鸟233号39 分钟前
力扣518 零钱兑换II java实现
java·数据结构·算法·leetcode·动态规划
扶苏-su40 分钟前
Java--标准输入输出流
java·开发语言
szm02251 小时前
Spring
java·后端·spring
进阶的小名1 小时前
[超轻量级延时队列(MQ)] Redis 不只是缓存:我用 Redis Stream 实现了一个延时MQ(自定义注解方式)
java·数据库·spring boot·redis·缓存·消息队列·个人开发
短剑重铸之日1 小时前
《7天学会Redis》Day 6 - 内存&性能调优
java·数据库·redis·缓存·7天学会redis
石头wang1 小时前
jmeter java.lang.OutOfMemoryError: Java heap space 修改内存大小,指定自己的JDK
java·开发语言·jmeter
yaoxin5211232 小时前
292. Java Stream API - 使用构建器模式创建 Stream
java·开发语言
阮松云2 小时前
code-server 配置maven
java·linux·maven