考虑我有以下界面:

public interface A { public void b(); }

但是我希望实现它的每个类对方法b()都有不同的返回类型。

例子:

public class C {

public C b() {}

}

public class D {

public D b() {}

}

我将如何定义我的界面,使之成为可能?

参考方案

如果返回类型必须是实现该接口的类的类型,那么您想要的称为F-bounded type:

public interface A>{ public T b(); }

public class C implements A{

public C b() { ... }

}

public class D implements A{

public D b() { ... }

}

换句话说,A声明了一个类型参数T,它将采用实现A的每种具体类型的值。通常用于声明类型正确的诸如clone()或copy()方法之类的东西。再举一个例子, java.lang.Enum 使用它声明每个枚举的继承的compareTo(E)方法仅适用于该特定类型的其他枚举。

如果您经常使用此模式,则会遇到需要this成为T类型的场景。乍一看,它似乎是显而易见的,但是实际上您需要声明一个abstract T getThis()方法,实现者必须将其琐碎地实现为return this。

[1]正如评论者所指出的,如果X implements A和X正确配合,则有可能像Y一样偷偷摸摸地做一些事情。 T getThis()方法的存在使我们更加清楚X绕过了A接口作者的意图。

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…Java DefaultSslContextFactory密钥库动态更新 - java

我有一个使用org.restlet.engine.ssl.DefaultSslContextFactory的现有应用程序和一个在服务器启动时加载的密钥库文件。我有另一个应用程序,该应用程序创建必须添加的证书服务器运行时动态地更新到密钥库文件。为此,我在代码中创建了证书和私钥,然后将其写入到目录。该目录由bash脚本监视,该脚本检查是否有新文件,如果出现,它将…

java接口返回类,Java接口和返回类型 - java相关推荐

  1. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  2. 43、在java中一个类被声明为final类型,表示了什么意思?

    43.在java中一个类被声明为final类型,表示了什么意思? 表示该类不能被继承,是顶级类. JAVA面试问题及答案大全

  3. 几个重要的java数据库访问类和接口

    编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...

  4. java接口版本控制_为什么要在Java中控制类和接口的可见性

    java接口版本控制 维护是软件开发的重要方面之一,并且经验证明,保持较低组件可视性的软件比暴露更多组件的软件更易于维护. 您不会在一开始就意识到它,但是在重新设计应用程序时会严重错过它. 由于保持向 ...

  5. java interfave_高级类特性----接口(intertface)

    接 口 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值的定义的集合. 从本 ...

  6. effective java 读书笔记——类和接口

    上周因为准备考试等一堆原因,没空看书,今天补上一点. 类和接口是java程序设计语言的核心,它们也是java语言的基本抽象单元,java语言提供了很多强大的基本元素,供程序员设计类和接口,这一章讲的是 ...

  7. 探讨Java I/O类和接口

    (输出)Output:程序---->数据源(如某个文件) (输入)Input:数据源---->程序 Java.io定义的I/O类如下表所示: BufferedInputStream Buf ...

  8. java接口与类相同不同_浅谈java的接口和C++虚类的相同和不同之处

    C++虚类相当于java中的抽象类,与接口的不同之处是: 1.一个子类只能继承一个抽象类(虚类),但能实现多个接口 2.一个抽象类可以有构造方法,接口没有构造方法 3.一个抽象类中的方法不一定是抽象方 ...

  9. java 用面向接口编程的方式开发打印机_Java“打印机”模型理解面向接口编程。实现接口定义类,接口实现类,核心“业务”类分离...

    接口定义类 IinkBox.java package printerDemo.iface; public interface IInkBox { public String getColor(); } ...

  10. JAVA笔记:shape类(接口,继承,lambda表达式...)

    目录 写一段程序,实现shape面积,并可以对面积大小排序 定义父类shape类,并定义方法Area() 定义第一个子类Circle类 定义第二个子类Rect类 定义接口Comparator,并写入c ...

最新文章

  1. Java集合---LinkedList源码解析
  2. 关于SysinternalsSuite全部工具【详解】
  3. 你应该知道的25道Javascript面试题
  4. SQL Server 2008 安装过程中遇到“性能计数器注册表”..
  5. servlet中文乱码_10分钟快速掌握Servlet相关基础知识
  6. css 矩形两边挖半圆
  7. RabbitMQ (一) MQ介绍以Linux下RabbitMq环境安装
  8. 【人脸识别】VGGFace2数据集介绍
  9. 82c55单片机c语言,AT89S51单片机与82C55的接口设计编程
  10. ARM汇编中ldr伪指令和ldr指令(转载)
  11. 【深度优先搜索】一个实例+两张动图彻底理解 DFS | DFS 与 BFS 的区别 | 用 DFS 自动控制我们的小游戏
  12. python vars()_Python vars()
  13. python调用canoe_从Python调用CAPL函数
  14. 全网首发:JProfiler11运行时找不到库的解决办法
  15. 花了三个月终于把所有的 Python 库全部整理了!可以说很全面了
  16. 零碎技术栈01_UML画图分析
  17. php上课随机点名,课堂随机点名软件
  18. 大数据Hadoop之——数据同步工具DataX
  19. 网络工程师考试试题讲解视频教程
  20. leetcode——第860题——柠檬水找零

热门文章

  1. proteus实现单片机的仿真
  2. 软件行业选择大公司还是小公司
  3. vs2010编译curl为static库及测试
  4. 水晶报表提示“出现打印错误。将停止打印”的原因,非page_Init
  5. [转载] 动态口令,动态密码生成(OTP)
  6. [转载] Python Numpy
  7. SignalTap II里面Power-Up Trigger的使用
  8. python socket 连续send,出现粘包问题
  9. Winform截图小程序
  10. python文件处理,将DNA序列转换为RNA序列