Java 7 试图通过简易方式为接口增加新的方法,而接口的实现类并不需要真正的实现这些新增的方法,这在 Java 7 中是通过静态方法来实现,称之为虚拟扩展方法。

为了演示这个特性,我们用一个简单的例子来演示一下,这里引用的是对 List 的倒序(reverse)处理。一般我们用以下的代码对 List 列表进行倒序:

List strings = new ArrayList();

Collections.reverse(strings);

这个方法有个问题,因为是静态方法,所以不能对此方法进行重载;另外一个问题是,reverse 方法并不属于 List 接口,因此要对一个 List 列表进行排序,需要两个类。

而通过虚拟扩展方法,上述的例子可以改写为:

public interface List extends Collection {

extension void reverse() default Collections.reverse;

}

这段代码为 List 接口增加了一个 reverse 的方法,并默认调用 Collections.reverse 来进行倒序处理,你现在可以这样调用倒序方法:

List strings = new ArrayList();

strings.reverse();

如此更加的OO,更酷。

你也可以自行实现一个 List 接口的类,并对 reverse 方法进行重写。

呵呵,挺有意思。

为类添加方法java_Java 7 : 为接口类增加“public defender 方法”相关推荐

  1. Collections.sort()泛型集合排序的使用,和自定义类实现Comparable<T>接口重写compareTo(T o)方法完成Collections.sort()排序,以及自定义排序规则

    Collections算法类         1.Collections类是Java提供的一个集合操作工具类. 2.Collections类定义了一系列用于操作集合的静态方法,用于实现对集合元素的排序 ...

  2. java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗

    一.简单总结,需要重写的有 普通类继承抽象类,重写所有抽象类方法:(不包括普通方法) 普通类继承接口,重写所有接口方法.(不包括default关键字修饰的方法) 详解见下: 普通类继承,并非一定要重写 ...

  3. 常用元器件使用方法13:物理层接口芯片DP83848的使用方法

    介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示 ...

  4. 分割字符串的方法java_java基础:字符串分割的两种方法

    帅子 阅读(549) 评论(1)  编辑  收藏 所属分类: j2se技术专区 方法1:采用String的split,验证代码如下: import java.util.Arrays; public c ...

  5. Java的类(class)、包(package)和接口(interface)

    在Java中,类(class)是用来代表对象的基本单元.对象(object)可以是现实世界中的任何一个实体,它具有若干区别于其它对象的属性和操作.而类则通过为对象定义属性和操作来概括一类实体.它封装了 ...

  6. ASP.NET Core中为指定类添加WebApi服务功能

    POCO Controller是 ASP.NET Core 中的一个特性,虽然在2015年刚发布的时候就有这个特性了,可是大多数开发者都只是按原有的方式去写,而没有用到这个特性.其实,如果利用这个特性 ...

  7. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)

    一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...

  8. java接口构建英雄属性_Python接口类的多继承以及抽象类的单继承

    一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a)如果像以下代码的方式,则不能够满足 ...

  9. 接口可以继承抽象类吗_Python接口类的多继承以及抽象类的单继承

    一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a)如果像以下代码的方式,则不能够满足 ...

最新文章

  1. Vision 圖像識別框架的使用
  2. 传授“带权重的负载均衡实现算法”独家设计思路!
  3. 基于人工智能智商研究的智能定律初探
  4. JAVA ssm b2b2c多用户商城系统源码 (十二)springboot集成apidoc
  5. 比亚迪f3android系统,比亚迪F3发动机防盗系统设定
  6. go 调用etcd实现分布式锁
  7. 【SSH系列】Hibernate映射 -- 一对多关联映射
  8. DCMTK:DcmAttributeFilter类的测试程序
  9. 《税的真相》—— 读后总结
  10. HTTP使用BASIC认证的原理及实现方法
  11. amd cpu 不兼容centos5.5_AMD放弃兼容性?这事简单也不简单
  12. 类的加载过程一:Loading
  13. P2149-[SDOI2009]Elaxia的路线【最短路】
  14. C++:类占用的字节内存
  15. killall 引起应用程序挂起【原创】
  16. c++,为什么要引入虚拟继承
  17. WordPress目录解析
  18. Redis中文学习文档redis.cn
  19. 基于python的酒店管理系统_(完整版)新 基于web的酒店管理系统毕业论文
  20. java 获取视频编码_Java如何获取文件编码格式

热门文章

  1. XAF-列表视图数据访问模式
  2. Redis入门(三)Redis的基本数据类型
  3. 修改mysql编码方式
  4. coreseek/sphinx CentOS6.4下安装
  5. javascript导入EXCEL数据
  6. JVM-内存溢出场景模拟
  7. 【ABP框架系列学习】N层架构(3)
  8. pyhton中的wsgi是什么?
  9. block创建时出现Typedef redefinition with different types错误
  10. 小程序开发 缓存的应用