事例代码:

  1. package com.xt.thins_15_3;
  2.  
  3. import java.util.Iterator;
  4.  
  5. /**
  6. * 泛型接口
  7. *
  8. * @author xue
  9. *
  10. * @param <T>
  11. */
  12. interface Generic<T> {
  13. public T next();
  14. }
  15.  
  16. /**
  17. * 斐波纳契(一种整数数列),普通类实现
  18. *
  19. * @author xue
  20. *
  21. */
  22. class Fibonacci implements Generic<Integer> {
  23.  
  24. protected static int count = 0;
  25.  
  26. @Override
  27. public Integer next() {
  28. // TODO Auto-generated method stub
  29. return fib(count++);
  30. }
  31.  
  32. public int fib(int n) {
  33. if (n < 2)
  34. return 1;
  35. return fib(n - 2) + fib(n - 1);
  36. }
  37. }
  38.  
  39. /**
  40. * 迭代适配器迭代斐波纳契(一种整数数列)
  41. *
  42. * @author xue
  43. *
  44. */
  45. class IterableFibonacci extends Fibonacci implements Iterable<Integer> {
  46.  
  47. private int size;
  48.  
  49. public IterableFibonacci(int size) {
  50. this.size = size;
  51. count = 0;
  52. }
  53.  
  54. @Override
  55. public Iterator<Integer> iterator() {
  56. // TODO Auto-generated method stub
  57. return new Iterator<Integer>() {
  58.  
  59. @Override
  60. public void remove() {
  61. // TODO Auto-generated method stub
  62.  
  63. }
  64.  
  65. @Override
  66. public Integer next() {
  67. // TODO Auto-generated method stub
  68. size--;
  69. return IterableFibonacci.this.next();
  70. }
  71.  
  72. @Override
  73. public boolean hasNext() {
  74. // TODO Auto-generated method stub
  75. return size > 0;
  76. }
  77. };
  78. }
  79.  
  80. }
  81.  
  82. public class FibonacciTest {
  83. public static void main(String[] args) {
  84. Fibonacci fib = new Fibonacci();
  85. for (int i = 0; i < 20; i++) {
  86. System.out.print(fib.next() + ",");
  87. }
  88. System.out.println("\n------------------------------");
  89. IterableFibonacci ifib = new IterableFibonacci(20);
  90. for (Integer integer : ifib) {
  91. System.out.print(integer + ",");
  92. }
  93. }
  94. }

JAVA泛型接口的更多相关文章

  1. java 泛型接口示例

    /* * 泛型接口 */ interface Tool<t> { public void show(T t); //泛型方法 public <e> void print(E e ...

  2. java泛型接口详解

    /* * 泛型接口 */ interface Tool<T> { public void show(T t); //泛型方法 public <E> void print(E e ...

  3. java 泛型接口和方法

    java5后,可以声明泛型接口,声明方式和声明泛型类是一样的. public interface IDAO<T>{} 泛型接口子类有两种方式: 直接在子类后申明泛型: 在子类实现的接口中给 ...

  4. 全面总结Java泛型

    本文对Java泛型进行了全面的总结.文章内容包括普通泛型.通配符.受限泛型.泛型接口.泛型方法.返回泛型类型实例等等. 虽然Scala创始人Martin Odersky说当年正是因为Java泛型的丑陋 ...

  5. Java 泛型(Generics)

    Generics, 类似C++中的模版. 允许在定义类和接口的时候使用类型参数(type parameters), 声明的类型参数在使用的时候用具体的类型来替换. 如 ArrayList<Str ...

  6. Java泛型用法总结

    普通泛型 class Point< T>{ // 此处可以随便写标识符号,T是type的简称 private T var ; // var的类型由T指定,即:由外部指定 public T ...

  7. (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)

    (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...

  8. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  9. java 泛型 -- 泛型类,泛型接口,泛型方法

    泛型T泛型的许多最佳例子都来自集合框架,因为泛型让您在保存在集合中的元素上指定类型约束.在定义泛型类或声明泛型类的变量时,使用尖括号来指定形式类型参数.形式类型参数与实际类型参数之间的关系类似于形式方 ...

随机推荐

  1. C 运算符与表达式

    运算(操作)是对数据的加工.最基本的运算形式常常可以用一些简洁的符号来记忆,这些符号称为运算符或操作符.被运算的对象-数据称为运算量或操作数.表达式描述了对哪些数据.以什么顺序以及施加什么样的操作.运 ...

  2. OC中另外的一个常用技术:通知(Notification)

    OC中另外的一个常用技术:通知(Nofitication)其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制 ...

  3. 20151205--JDBC-2

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. 项目中经常用到的reset.css文件

    html,body{width:100%; height: auto;} *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box- ...

  5. char str[] 与 char *str的区别详细解析

    char* get_str(void) { char str[] = {"abcd"}; return str; } char str[] = {"abcd"} ...

  6. stat 函数讲解

    表头文件:    #include <sys/stat.h>                     #include <unistd.h>定义函数:    int stat( ...

  7. 在linux中限制用户ftp访问权限

    1.环境:redhat linux企业版4.ftp为vsftp.被限制用户名为aaa.被限制路径为/bbb.2.建用户:在root用户下,相继进行如下操作       adduser aaa      ...

  8. CentOS 6下配置本地用户访问vsftpd并赋予写权限

    一.安装并测试可用性 1.安装命令 yum install vsftpd 2.配置防火墙,加入一行 -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT 在其它机测试 ...

  9. 【翻译】MVC Music Store 教程-概述(三)

    Controller 与传统的Web框架,将传入的URL通常映射到磁盘上的文件.例如:一个URL请求“/Products.aspx" 或"/Products.php”是处理一个Pr ...

  10. 9.java.lang.ClassCastException

    java.lang.ClassCastException 数据类型转换异常 当试图将对某个对象强制执行向下转型,但该对象又不可转换又不可转换为其子类的实例时将引发该异常,如下列代码. Object o ...