当前位置: 首页 > news >正文

java返回并继承_Java方法从继承返回类型

我在Parent类中编写了一个方法,该方法返回一组对象A.但是,我有一个Child类(继承自Parent方法).我希望它返回一组某些对象B(B从A继承).

更具体地说,我的方法看起来像这样(它现在会引发编译错误).

父类方法:

public abstract Set getSet();

子类(扩展父类)方法:

public Set getSet() {...}

有可能这样做,还是没有意义?

解决方法:

首先,让我解释一下为什么您的代码无法编译.基本上,如果您有A类{},而B类扩展了A {},则Set< B>不是Set A的子类型.因此,如果您的父方法返回Set< A&gt ;,则您的覆盖必须返回相同的内容. A组< B>是完全不同的类型.

同样,Set< T扩展B>.不是Set< Textends A>的子类型.完整说明请参见Java docs.

我能想到的最接近的解决方案是使用通配符:

class A {}

class B extends A {}

abstract class Parent {

abstract Set extends A> getSet();

}

class Child extends Parent {

Set extends B> getSet() {

return new HashSet();

}

}

设置&lt ;?扩展B>是Set

根据您要精确实现的目标,这可能比您预期的要受限制,但可能会尽可能接近.

就像Jude所说的那样,使用内部类也许可以达到类似的效果,但是我不认为这将是一个更方便的解决方案.

标签:oop,inheritance,generics,java

来源: https://codeday.me/bug/20191112/2024382.html

相关文章:

  • java输入查找数组中的数_剑指Offer Java版 面试题53:在排序数组中查找数字
  • 插座java适配器模式_Java开发网 - 适配器模式的理解 (我自己写的)
  • java中borderpane_JavaFX BorderPane布局
  • Java如何查行数_如何正确利用Rownum来限制查询所返回的行数?
  • java 3 4_3-4 Java基础第四天
  • php phar 文件使用,PHP如何操作phar文件
  • java使用xpath解析xml,java使用XPath解析xml
  • php脚本防护,PHP的一个EVAL的利用防范
  • php中背景图怎么设置不重复,css怎么让背景图片不重复
  • java标签更改显示,离子选项卡,如何在标签更改上显示微调器?
  • java读写二进制文件 移动指针 seek,《Java大学教程》—第20章 文件处理
  • php权限无需验证的控制器,控制器 · ThinkPHP5权限管理 · 看云
  • 两'参数粒子群matlab,SVM用粒子群优化参数
  • 数据在文本框中显示 php,在文本框中使用php和纯ajax从数据库加载数据
  • 数字信号处理matlab滤波器,数字信号处理matlab滤波器课程设计
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 2017前端实习生面试总结
  • Android 控件背景颜色处理
  • LeetCode18.四数之和 JavaScript
  • node和express搭建代理服务器(源码)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React16时代,该用什么姿势写 React ?
  • React-生命周期杂记
  • TCP拥塞控制
  • 记录一下第一次使用npm
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (3)选择元素——(17)练习(Exercises)
  • (C#)获取字符编码的类
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (一)kafka实战——kafka源码编译启动
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)详解PHP处理密码的几种方式
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net环境下的缓存技术介绍
  • .NET学习教程二——.net基础定义+VS常用设置
  • /bin/rm: 参数列表过长"的解决办法
  • @KafkaListener注解详解(一)| 常用参数详解
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [Android]创建TabBar
  • [Android]一个简单使用Handler做Timer的例子
  • [Asp.net mvc]国际化
  • [C++]STL之map
  • [C++]类和对象(中)
  • [docker] Docker容器服务更新与发现之consul
  • [Foreman]解决Unable to find internal system admin account
  • [Fri 26 Jun 2015 ~ Thu 2 Jul 2015] Deep Learning in arxiv
  • [GN] DP学习笔记板子
  • [GN] Vue3快速上手1
  • [GXYCTF2019]BabyUpload1 -- 题目分析与详解
  • [JavaWeb]—前端篇
  • [JavaWeb学习] tomcat简介、安装及项目部署
  • [Jenkins] Docker 安装Jenkins及迁移流程