美文网首页
Java基础(8)——泛型

Java基础(8)——泛型

作者: 让时间走12138 | 来源:发表于2020-04-11 19:05 被阅读0次

本节内容

1.泛型使用

2.泛型实战

一、泛型使用

1.泛型一般应用于Collection和Map
2.使用场景:在定义类或者接口的时候需要操作数据,但是又不清楚使用者需要哪种数据,也就是不知道参数的类型。
3.泛型作用:泛型可以用来定义类、接口、变量、方法
4.泛型的定义:在定义的时候可以使用泛型来代表任意类型,但是在使用的时候(定义变量,创建对象)必须传递实际类型,可以参考ArrayList的调用方法,那个<>是必须的,里面是啥可以自己定
class Test <E>{
}
//泛型接口
interface  ITest<T>{
    void test(T t);
}
public class MyClass {
    public static void main(String[] args) {
      Test<String> test;
      new Test<String>();
      Test<String> test1 =new Test<>();
    }
}
5.类继承一个接口时,可以指定接口的类型
class MyClass1 implements ITest<String>{

    @Override
    public void test(String s) {

    }
}
类继承一个接口时,也可以指定当前类型为泛型
class MyTest<T>implements ITest<T>{

    @Override
    public void test(T t) {
        
    }
}
6.创建一个泛型类对象,可以直接创建,也可以使用匿名内部类
     ITest<String> test2=new MyClass1();
      //使用匿名内部类对象
        ITest<String> test3 =new ITest<String>() {
            @Override
            public void test(String s) {

            }
        };
7.泛型方法,必须在方法前使用<T>来表示需要使用泛型
class Father{
    public <T> void test(T t){
    }
}
在使用的时候创建一个对象,调用时自己传入参数即可,任意参数,数组也可以
     Father father =new Father();
      father.test("jack");
       ArrayList<String>names=new ArrayList<>();
        names.add("jack");
        names.add("merry");
      father.test(names);
8.?通配符:当在使用一个泛型时,如果还不确定到底是什么类型,可以使用?来表示任何类型。注意:Java的集合类型不是自动变型
public void showList(List<?> list){
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
    }
9.设置泛型的上限 extends,可以指定传过来的参数的上限
//指定传过来的类型的父类必须是food
class Student <T extends food>{
 public void eat(T t){
 }
}
以下为调用
       Student<food> xw ;
        Student<milk> xw1 ;
10.使用super来设置下限,可以是任意类型,但至少得是某个类型
//使用super来设置下限
class STest{
    public <T> void copy(List src,List<? super T> dest){
    }
}

二、泛型实战

1.以昨天写的联系人其中一个部分为例,在添加联系人时,我们希望直接排好序,我们可以用泛型来解决这个问题
2.在系统原有的基础上添加一个功能,将数据加入数组,就排好序。首先另外创建一个SortedList类,然后调用原本的add方法,将这个方法改写一下。
public class SortedList<T extends Comparable<? super T>> extends ArrayList<T> {
    @Override
    public boolean add(T t) {
        //将数据保存
        boolean result = super.add(t);
      //对数组排序
        Collections.sort(this);
        //返回结果
        return result;
    }
}
想要调用add方法,首先就要继承ArrayList类,因为调用Collections.sort方法,就需要实现Compaeable接口,而且这个接口至少得是T类型。
在主函数里面使用这个方法
SortedList<Person> lists =new SortedList<>();
  lists.add(new Person("jack"));
OK,以上就是今天的全部内容了,再见。

相关文章

  • Java基础 (8) 泛型

    问题1:extends和super的区别 泛型 一般的类和方法,只能使用具体类型:要么是基本类型,要么是自定义类型...

  • Java基础(8)——泛型

    本节内容1.泛型使用2.泛型实战 一、泛型使用1.泛型一般应用于Collection和Map2.使用场景:在定义类...

  • Java 泛型

    导读 移动开发知识体系总章(Java基础、Android、Flutter) 为什么会有泛型? 泛型类 泛型方法 泛...

  • Java泛型教程

    Java泛型教程导航 Java 泛型概述 Java泛型环境设置 Java泛型通用类 Java泛型类型参数命名约定 ...

  • Java基础之泛型

    Java基础之泛型 泛型基本介绍 简单介绍在jdk1.6之前,还没有使用到泛型,Java类型分为原始类型、复杂类型...

  • spring 泛型处理

    java 泛型基础 泛型类型:泛型类型是在类型上参数化的泛型类或接口 泛型使用场景编译时前类型检查。定义为 Col...

  • Java泛型基础

    Java泛型基础 1. 认识泛型 泛型是在JDK1.5之后增加的新功能. 泛型可以解决数据的安全性问题, 主要的原...

  • 一文带你认识Java泛型基础

    Java泛型基础 1. 认识泛型 泛型是在JDK1.5之后增加的新功能. 泛型可以解决数据的安全性问题, 主要的原...

  • 第二十八课:泛型

    泛型出现之前 泛型出现之后 Java深度历险(五)——Java泛型

  • Java基础(一)

    Java要点1 JAVA基础 1.对抽象、继承、多态的理解 2.泛型的作用及使用场景 1.Java泛型是JDK1....

网友评论

      本文标题:Java基础(8)——泛型

      本文链接:https://www.haomeiwen.com/subject/vgeumhtx.html