栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

浅了解泛型机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅了解泛型机制

   目    录   

1.泛型机制

2.泛型的语法 

3.泛型的注意事项

4.泛型好处: 可以把问题提前编译期,泛型有良好的扩展性并且可以避免向下转型.

5.泛型可以使用在 类,接口,方法上

6.泛型通配符


1.泛型机制

泛型机制是一种把数据类型明确工作,推迟到创建对象或调用方法时,才去明确的一种机制,也就是在创建对象或调用方法时才会知道是数据的数据类型是什么类型.并且泛型机制是JDK1.5版本之后才有的机制!

2.泛型的语法  

其中E Y 就是代号,一般是指引用数据类型.

3.泛型的注意事项 

泛型只在编译期有效,在运行期泛型就擦除了.也就是泛型的作用只在编译期有效.

4.泛型好处: 可以把问题提前编译期,泛型有良好的扩展性并且可以避免向下转型. 

一般来说,不会在容器中存储多种数据类型,只会在容器中存储同一种数据类型。使用了泛型的直观感受就是可以限定集合中存储的元素的数据类型,只能是泛型这种类型。

ArrayList list2 = new ArrayList();
        list2.add("abc");
        list2.add("abc");
        list2.add("hello");
        list2.add("world");
        //此时只能是String类型的数据放入到list2集合中

如果就是有一个要求想要在集合中存储多种引用数据类型并且还得把泛型写上的话!就得把泛型定为

ArrayList list3 = new ArrayList<>();
        list3.add(200);
        list3.add("abc"); 

5.泛型可以使用在 类,接口,方法上 

泛型类:   public class 类名<泛型类型1,…>

public class MyObject {

    private X x;
    private Y name;
    private Date birthday;

    public X getX() {
        return x;
    }

    public void setX(X x) {
        this.x = x;
    }

    public Y getName() {
        return name;
    }

    public void setName(Y name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

泛型接口:   public interface 接口名<泛型类型>

public interface MyInterface {
    public abstract void show(X x);
}

 当一个类,去实现一个接口时,可以在这里明确泛型接口上定义的那个泛型的具体数据类型

public class AA implements MyInterface {
    @Override
    public void show(Integer integer) {

    }
}

当一个类实现一个泛型接口时,还是不想急于去明确这个接口上的泛型的具体类型,那么这个类继续设计为泛型类

public class BB implements MyInterface {

    @Override
    public void show(X x) {

    }
}

泛型方法:   public <泛型类型> 返回类型 方法名(泛型类型 变量名)

public class MyCalc {

    public 

void show(P p) { System.out.println(p); } }

6.泛型通配符 

泛型通配符是指任意类型,如果没有明确,那么就是Object以及任意的Java类了.它的任意程度要比Object的任意程度大!

 如上图所示:Object泛型后面只能是,其他的String或者自定义的Animal类型都不可以.但是通配符都可以,其中还可以包括Object泛型.

关于通配符后面可以跟的泛型类型有以下两种情况,不满足情况的一定会报错!

  • ? extends E:         向下限定,后面只能写E类以及其子类
  • ? super E:             向上限定,后面只能写E类及其父类
import java.util.ArrayList;

public class FanXingTest {
    public static void main(String[] args) {
     
        //向上限定 只能说 Animal本身或Animal的父类

        ArrayList objects4 = new ArrayList();
        ArrayList objects5 = new ArrayList();


        //向下限定 只能说 Animal本身或Animal的子类

        ArrayList objects7 = new ArrayList();
        ArrayList objects8 = new ArrayList();
        ArrayList objects9 = new ArrayList();

    }
}


class Animal {
}
class Cat extends Animal {
}
class Dog extends Animal {
}

 

(小编也在努力学习更多哟!以后再慢慢分享的啦!)

希望对友友们有所帮助!!!!

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号