iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >这个Java泛型不太正经
  • 290
分享到

这个Java泛型不太正经

2024-04-02 19:04:59 290人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、泛型三、泛型定义的格式:什么是引用类型?泛型的好处是: 四、泛型类五、泛型方法六、泛型接口七、类型通配符总结一、前言 泛型在java中有很重要的地位,在实际

一、前言

泛型在java中有很重要的地位,在实际开发中用处也很大。

二、泛型

泛型:是jdk5中引入的特性,他提供编译是类型是类型的安全检测机制,这个机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是所操作的数据类型不变指定为一个参数

将原来具体的类型参数化,然后再使用/调用的时候传入具体的参数

泛型的类型:

①:泛型类

②:泛型方法 

③:泛型接口

三、泛型定义的格式:

<类型> :指定一种类型的格式,这里的类型可以看成是形参。

<类型1,类型2...>:指定多种类型的格式,多种类型之间用逗号隔开,这里的类型类型1,类型2可以看成是形参,将来具体调用的时候的参数看成是实参,这里的泛型只能是引用类型

什么是引用类型?

除了八大基本类型其他的都是引用类型,如基本类型对应的包装类

  • boolean -->Boolean
  • char --->Character
  • byte -->Byte
  • short -->Short
  • int -->Integer
  • long -->Long
  • float -->Float
  • double -->Double

泛型的好处是:  

  • 把运行得问题提前到编译时期   
  • 避免了强制转换

没指定类型默认是Object类型

举个例子,当没有使用泛型时:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
public class 泛型Demo {
    public static void main(String[] args) {
        //创建一个对象
        Map map=new HashMap();
        //添加数据
        map.put(1, "张三");
        map.put(2, "李四");
        map.put(3,"王五");
        map.put(5, 6);//加了不一样的类型数据
 
        //键的集合
        Set keySet=map.keySet();
        //键找值
        for(Object key: keySet){
            String value=(String)map.get(key);
            System.out.println(key+":"+value);
        }
 
 
    }
}

报了一个类型转换异常(int会自动转化成Integer),Integer不能转为String

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
 

 此时泛型的好处就体现出来了,将运行时会出现的错误拉到了编译期间。

 

 当然也可以在输出是采用Object接收

        //键的集合
        Set keySet=map.keySet();
        //键找值
        for(Object key: keySet){
           Object value=map.get(key);
          //  String value=(String)map.get(key);
            System.out.println(key+":"+value);
        }

这样也可以得到想要的结果。

四、泛型类

泛型类的定义格式:

修饰符 class 类名<类型> { }

举例:

public class Generic<T>{}

这里的T可以使任意标识,常见的如T、E、K、V等形式常用于表示泛型。

泛型类下

public class Generic<T> {
    //定义一个变量,提供get set方法
    private T t;
    public T getT(){
        return t;
    }
    public void SetT(T t){
        this.t=t;
    }
    
}

测试类下

public class GenericDemo {
    public static void main(String[] args) {
        Generic<String> g1=new Generic<>();
        g1.SetT("章三");
        System.out.println(g1.getT());
        System.out.println("------------------");
        Generic<Integer> g2=new Generic<>();
        g2.SetT(100);
        System.out.println(g2.getT());
    }
}

运行结果

 定义这个泛型类的好处就是可以在测试中输入各种你想要的类型。

五、泛型方法

定义泛型方法的格式:

修饰符 <类型> 返回值类型 方法名 (类型 类型名)

举例:

public <T> void show (T t){}

泛型方法

 
public class Generic {
public <T> void show(T t){
    System.out.println(t);
}
}

泛型方法测试下:

public class GenericDemo {
    public static void main(String[] args) {
       Generic g=new Generic();
       g.show("张三");
       g.show(100);
       g.show(true);
   g.show(null);
    }
}

运行结果

 泛型方法比泛型类方便许多,直接在这使用即可,可以用个中类型的参数

六、泛型接口

格式:修饰符 interface 接口名<类型>{}

举例:

public interface Generic&lt;T&gt;{}

既然是接口那就得定义一个类 去实现这个接口

泛型接口:

public interface Generic<T>{}

 GenricImp类下:

public class GenricImp<T> Generic<T>{
   public void show(T t){
     System.out.println(t);   
   }
  
}

 GenricDemo类下:

public class GenricDemo{
   public static void main(String[]args){
        Generic<String> g1=new GenericImp<String>();
       g1.show("张三");
   Generic<Integer> g2=new GenericImp<Integer>();
       g2.show(100);
   }
}

七、类型通配符

<? extends T>上限通配,?表示是T的一个未知子类。


<? super T>下限通配,?表示是T的一个未知父类。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 这个Java泛型不太正经

本文链接: https://www.lsjlt.com/news/161779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 这个Java泛型不太正经
    目录一、前言二、泛型三、泛型定义的格式:什么是引用类型?泛型的好处是: 四、泛型类五、泛型方法六、泛型接口七、类型通配符总结一、前言 泛型在java中有很重要的地位,在实际...
    99+
    2022-11-12
  • java为什么不能实现真正泛型
    Java 之所以不能实现真正泛型的原因有以下几点:1. Java泛型是通过类型擦除来实现的,即在编译期间将泛型类型擦除为其上界或Ob...
    99+
    2023-09-20
    java
  • Java不能真正泛型的原因是什么?
    目录简单来回顾一下类型擦除,看下面这段代码。为什么 Java 不能实现真正意义上的泛型呢?背后的原因是什么?第一,兼容性第二,不是“实现不了”总结简单来回顾一下类型擦除,看下面这段代...
    99+
    2022-11-12
  • Java教程太枯燥?这个Laravel数据类型教程会让你爱上编程!
    Java是一门非常流行的编程语言,但是对于一些初学者来说,学习Java可能会感到乏味和枯燥。如果你也有这样的感受,那么这篇文章可能会对你有所帮助。本文将介绍一种名为Laravel的PHP框架中的数据类型教程,希望能够让你重新爱上编程。 La...
    99+
    2023-09-21
    教程 laravel 数据类型
  • 如何在Go中正确使用API来处理不同的数据类型?这个教程可以告诉你!
    在Go语言中,处理不同的数据类型是非常常见的操作。不同的数据类型需要不同的处理方法,因此使用API来处理数据类型是一种非常好的方式。在本文中,我们将介绍如何在Go中正确使用API来处理不同的数据类型。 使用类型断言 在Go中,使用类型...
    99+
    2023-06-03
    api 数据类型 教程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作