实现Comparable< T>的类通常为自己实现它,例如
class MyInteger implements Comparable<MyInteger> { ... }
class MyString implements Comparable<MyString> { ... }

但是没有什么可以阻止你为不同的类型实现它:

class MyString implements Comparable<MyInteger> { ... }

这将允许您将MyString与MyInteger进行比较.

如in the Javadoc所述,Comparable旨在模拟自然排序,即total order,因此为了能够具有反对称性,compareto的参数类型应该与定义该方法的类型相同.

但实现类是否有任何实际用途(滥用)SomeType实现Comparable< OtherType>?

更新:Joni和I提供的答案给出了可比较<超类型>的实际示例.隐式实现,即您的类传递实现该接口的位置.知道是否有人有明确使用它的例子会很有趣.

解决方法

如果有父/子关系,你会发现这一点.例如,Enum类实现Comparable< E> E是一个类型参数.所有枚举共享这个compareto实现.

澄清:Enum< ConcreteClass>实现Comparable< ConcreteClass>.如果它遵循该模式,您希望它实现Comparable< Enum< ConcreteClass>>

是否有理由为其他类型的类型实现java.util.Comparable?的更多相关文章

  1. ios – 从枚举类型’enum UIDeviceOrientation’到不同的枚举类型’UIInterfaceOrientation”enum UIInterfaceOrientation的隐式转换

    我正在使用Xcode5.0.2并在尝试编译我的目标C代码时收到以下警告:Implicitconversionfromenumerationtype‘enumUIDeviceOrientation’todifferentenumerationtype‘UIInterfaceOrientation’(aka‘enumUIInterfaceOrientation’)警告在viewController.m

  2. ios – 如何在迅捷中比较Enum?

    在Objective-C中这很好用无法在Swift中编译它要么IOSSDK中的ALAuthorizationStatus定义解决方法比较运算符==返回Bool,而不是布尔值.以下编译:(就个人而言,我发现Swift编译器的错误消息有时令人困惑.在这种情况下,问题不是==的参数,而是错误的返回类型.)实际上,由于自动类型推断,还应编译以下内容:但它失败了编译器错误“无法找到成员’授权’”,除非你显式

  3. Swift实现菜单的多选

    Swift中的option类型Swift的enum不支持多选,所以能够多选的option类型应该用struct:RawOptionSet来实现。官方的SDK正是采取这种方法移植的。正确的写法以上例子中的代码,用swift正确的写法如下:letoptions:NsstringDrawingOptions=.UsesLineFragmentOrigin|.UsesFontLeadingletboundingRect=string.bridgetoObjectiveC().boundingRectWithSiz

  4. Swift的enum枚举类型介绍

    声明枚举类型的几种方法和使用:一:二:

  5. swift enum 和OC兼容

    虽然说swift是基于OC的,但是swift和OC还是有很多去别的,今天我们来说一下枚举变量下面是某个免费短信验证码的验证方法的返回状态这是一个正常的OC枚举写法,但是如果你在swift里面调用这个写在OC里面的枚举想进行操作的话,那么对不起,你会收到各种错误提示比如你不能这样会报下面的错误(这个绝不是.Success调用错的愿意)你也不能这样会报下面的错误但是下面的方法可以进行调用,但是我没有找

  6. Swift语言中class、struct、enum的联系与区别

    相同点三者都可以拥有属性和方法都可以拥有函数class和struct可以拥有自己的构造器不同点类可以继承类可以内省和转型struct、enum为值类型,class为引用类型类方法用class关键词声明,enum、struct用static关键词用mutaing关键词声明要修改struct、enum内容的方法结构体适合基本数据类型

  7. Swift中一个类中的枚举enum类型的数据该如何实现序列化NSCoder

    简述昨天在开发中遇到了这样一个问题,需要用NSUserDefaults持久化一些数据,其中需要保存一个自己定义的类对象。结束其实枚举本来就是一个Int,因此我们将其声明为Int型就可以根据Int值初始化了,以此实现序列化和反序列化。

  8. Swift 中枚举高级用法及实践

    和switch语句类似,Swift中的枚举乍看之下更像是C语言中枚举的进阶版本,即允许你定义一种类型,用于表示普通事情中某种用例。不过深入挖掘之后,凭借Swift背后特别的设计理念,相比较C语言枚举来说其在实际场景中的应用更为广泛。特别是作为强大的工具,Swift中的枚举能够清晰表达代码的意图。最后我们还会大致了解下Swift标准库中枚举是如何被使用的。小结至此,我们已经大致了解了Swift中枚举语法的基本用例。

  9. Swift中enum自定义类型的实现

    不过Swift给我对enum类型自定义扩展的一种方法,就是实现RawRepresentable协议!下面我们再假想一个场景:一个记录中包含一个type,用来说明记录类型,与上面类似,每一个类型都有name和logo两部分.我们可以选择自定义一个结构来搞定:不过在这里,使用元组更为简单,以下是完整的实现:于是乎如果我们想要用type来初始化UI,我们可以这么写:效果如下:

  10. [Swift] Enum 好用, Enum 可以更易用

    只需要写少量的几行声明:如下.选中,右键,选择"Services|generate_enum"然后如下代码就自动生成了:怎么样?当然还有其他选项可以使用.如果你有其他需要麻烦告诉我.当然有PR最好了.最后来张动图感受一下:代码在:OSCGitGithub

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部