跟王老师学泛型(四):定义泛型接口及实现

定义泛型接口及其实现

主讲教师:王少华 QQ群:483773664

学习目标

1、泛型接口

2、实现泛型接口的三种情况

一、定义接口


1

2

3

public interface Generator<T> {

    public T next();

}

二、实现这个接口


1

2

3

4

5

6

7

8

9

10

public class FruitGenerator implements Generator<String> {

    private String[] fruits = new String[]{"Apple", "Banana", "Pear"};

    @Override

    public String next() {

        Random rand = new Random();

        return fruits[rand.nextInt(3)];

    }

}

三、调用


1

2

3

4

5

6

7

8

9

10

public class Main {

    public static void main(String[] args) {

        FruitGenerator generator = new FruitGenerator();

        System.out.println(generator.next());

        System.out.println(generator.next());

        System.out.println(generator.next());

        System.out.println(generator.next());

    }

}

四、实现接口的三种情况


1

2

3

4

5

6

7

8

9

public class FruitGenerator<T> implements Generator<T>{

    @Override

    public T next() {

        // TODO Auto-generated method stub

        return null;

    }

}


1

2

3

4

5

6

7

8

9

public class FruitGenerator implements Generator<String>{

    @Override

    public String next() {

        // TODO Auto-generated method stub

        return null;

    }

}


1

2

3

4

5

6

7

8

public class FruitGenerator implements Generator{

    @Override

    public Object next() {

        // TODO Auto-generated method stub

        return null;

    }

}

五、学习视频网址:

http://edu.51cto.com/course/course_id-6083.html

来自为知笔记(Wiz)

时间: 2024-10-13 07:58:53

跟王老师学泛型(四):定义泛型接口及实现的相关文章

跟王老师学泛型(八):泛型擦除与转换

泛型擦除与转换 主讲教师:王少华 QQ群:483773664 学习目标: 掌握泛型擦除的含义 理解泛型转换的规则 一.泛型擦除 (一)什么泛型擦除 Java中的泛型基本上都是在编译器这个层次来实现的.在生成的Java字节码中是不包含泛型中的类型信息的.也就是说虚拟机中没有泛型,只有普通类和普通方法 使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉.这个过程就称为类型擦除. 类型擦除的主要过程如下:     1.将所有的泛型参数用其最左边界(最顶级的父类型)类型替换.     2.移除所有

跟王老师学泛型(五): 自定义带泛型声明的方法

带泛型声明的方法 主讲教师:王少华 QQ群:483773664 学习目标: 掌握泛型方法的定义 掌握泛型方法的使用 一.需求 假设需要实现这样一个方法,该方法负责将一个Object数组的所有元素添加到一个Collection集合中. 1 2 3 4 5 6 7 8 9 10 /**      * 将array中的元素添加到colleciotn中      * @param array      * @param c      */     public void fromArrayToColle

跟王老师学泛型(九):泛型拾遗

泛型拾遗 主讲教师:王少华 QQ群:483773664 学习目标 掌握泛型方法与类型通配符的区别 泛型与方法重载 泛型与数组 一.泛型方法和类型通配符的区别 (一)大多数时候,可以使用泛型方法来替换类型通配符 比如这样一个需求:定义一个方法,接收一个任意集合,并打印出集合中的所有元素.泛型方法和类型通配符都可以实现 1 2 3 4 5 6 7 8 9 10 11 12 13 public class Need {     public <T> void printCollection(Coll

跟王老师学泛型(一)使用泛型

使用泛型 主讲教师:王少华 QQ群:483773664 学习目标: 理解使用泛型的必要性 掌握使用Java泛型 一.为什么使用泛型 Java集合有一个缺点:Java集合会把我们"丢进"集合的元素默认为Object类型,没有记住元素本身的类型.当然,Java这样设计是有原因的:因为设计集合的程序员不会知道我们需要用这个集合来保存什么类型的对象,所以他们把集合设计成能保存任何类型的对易用. 这样设计会存在以下问题 集合对元素类型没有任何限制,这样可能引发一些问题.比如我们创建一个集合用于存

跟王老师学泛型(十):泛型的应用

泛型的应用 主讲教师:王少华 QQ群:483773664 一.需求 用户在设计类的时候往往会使用类的关联关系,例如,一个人中可以定义一个信息的属性,但是一个人可能有各种各样的信息(如联系方式.基本信息等),所以此信息属性的类型就可以通过泛型进行声明,然后只要设计相应的信息类即可. 二.参考代码 1.接口:Info 1 2 public interface Info{     // 只有此接口的子类才是表示人的信息 } 2.联系方式:Contact 1 2 3 4 5 6 7 8 9 10 11

跟王老师学泛型(六):类型通配符

类型通配符 主讲教师:王少华 QQ群:483773664 学习目标 1 类型通配符的使用 2 使用类型通配符的方法,注意事项 一.什么是通配符 通配符 :是一种表示未知类型的类型约束,用问号表示. 比如,Collection<?>,将问号作为类型传给集合,表示是未知类型元素的集合.这个问号(?)被称为通配符,它的元素类型可以匹配任何类型. 二.需求 假设需求定义一个方法,该方法里有一个集合形参,集合中的元素类型是不确定的.那我们应该怎么定义? 三.实现 1 2 3 4 5 6 7 public

跟王老师学泛型(七):限制通配符

限制通配符 主讲教师:王少华 QQ群:483773664 学习目标 1.限定通配符的上边界 2.限定通配符的下边界 3.限定通配符是某种类型的接口 一.设定类型通配符的上限 (一)需求 如果我们不想这个List<?>是任何泛型List,只想表示它是某一类泛型List的父类. 比如,List中的元素只能是Employee类及其子类. (二)语法 1 <? extends superClass> (三)实现 1 2 public class Person { } 1 2 public 

跟王老师学泛型(二):Java自动装箱与拆箱

Java 自动装箱与拆箱(Autoboxing and unboxing) 主讲教师:王少华 QQ群:483773664 学习目标: 掌握Java 基本数据对应的包装类 掌握Java 自动装箱与拆箱 一.基本数据类型对应的包装类 Java为每一种基本数据类型都提供了一个包装类,而这些包装类就在java.lang包中.Java共有8个包装类.如下图所示: 包装所有数字类型类都继承自Number类,Number类是一个抽象类. 二.什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).

跟王老师学注解(四):自定义注解

跟王老师学注解(四):自定义注解 主讲教师:王少华   QQ群号:483773664 到此,我们已经学习完了JDK提供的3种内建注解及4种元注解,下面来了解自定义注解 一.注解类型 (一)注解类型与接口:注解类型是一种接口,但它又不同于接口 1.注解类型使用关键字@interface而不是interface 1 2 public @interface TestAno { } @interface隐含继承java.lang.annotation.Annotation接口 2.注解类型的方法定义是独