java--泛型--泛型接口&泛型方法(代码片段)

张紫韩 张紫韩     2022-12-02     766

关键词:

  1. 泛型接口
    1.   

      package com.model.fanxing;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/6/30 22:14
       * 泛型接口和实现类
       * 1.泛型接口的实现类,是一个泛型类,那么要保证实现接口的泛型类的反省表示中要包含 泛型接口的泛型标识
       * 2.泛型接口的实现类,不是一个泛型类是,要保证泛型接口的泛型标识要指定具体的 类型,否则泛型接口的实现类会报错
       * 为什么子类的和父类的泛型类型标识要一样呢,我们创建子类对象是,需要现创建父类对象,我们会为子类指定具体的泛型类型,
       * 这是如果子类和父类的泛型类型不一致时,父类无法的得到具体的类型,就无法创建具体的实例对象,无法创建父类对象,就无法创建子类对象
       *
       * */
      public class FanXingDemo05 
          public static void main(String[] args) 
              Chile chile = new Chile();
              System.out.println(chile.getValue());
      
              ChileOne<String> strChileOne = new ChileOne<>();
              strChileOne.setName("张紫韩");
              System.out.println(strChileOne.getValue());
          
      
      //泛型接口
      interface Parent<T>
          public T getValue();
      
      //泛型接口的实现类
      class Chile implements  Parent<String>
          @Override
          public String getValue() 
              return "张紫韩";
          
      
      //泛型接口的实现类(实现了是泛型类)
      class ChileOne<T> implements Parent<T>
          private T name;
      
          public ChileOne() 
      
          
      
          @Override
          public T getValue() 
              return name;
          
      
          public void setName(T name) 
              this.name = name;
          
      
          public ChileOne(T name) 
              this.name = name;
          
        
  2. 泛型方法
    1.  

       

      package com.model.fanxing;
      
      import java.util.ArrayList;
      import java.util.List;
      import java.util.Random;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/6/30 23:03
       * 演示泛型方法的使用
       * 泛型方法和泛型类没有关系,当泛型类中标识类和泛型方法的标识类中有相同的标识符时,他们直接也不会相互影响,即泛型类指定的类型,
       * 于泛型方法指定的类型是两码事,他们事不会相互影响,泛型方法脱离泛型类的控制
       *
       * 泛型方法的返回值可以时泛型方法指定的任意类型,而泛型类中的成员方法返回的只能是类中指定的泛型类型
       * 泛型方法可以是静态的,泛型类中的成员方法不能是静态的
       *
       * 泛型方法支持静态的
       * 支持可变参数的泛型方法
       *
       */
      public class FanXingDemo06 
          public static void main(String[] args) 
              Product<String> product = new Product<>();
              product.add("a");
              product.add("b");
              product.add("c");
              product.add("d");
              System.out.println(product.getProduct());
      
              ArrayList<Integer> list = new ArrayList<>();
              list.add(100);
              list.add(200);
              list.add(300);
              list.add(400);
              System.out.println(product.getProduct02(list));
              ArrayList<String> strList = new ArrayList<>();
              strList.add("a");
              strList.add("b");
              strList.add("c");
              strList.add("d");
              System.out.println(product.getProduct02(strList));
      
      //        静态的泛型方法的调用
              System.out.println(Product.getProduct04(strList));
      //        可变参数的泛型方法的调用
              product.get(1,2,3,4,5,6);
              product.get("a","b","c","d");
      
          
      
      class Product<E>
          private E product;
      
          List<E> list=new ArrayList<>();
          public void add(E product)
              list.add(product);
          
          public E getProduct()
             product=list.get(new Random().nextInt(list.size()));
             return product;
          
          public <T> T getProduct02(ArrayList<T> list2) //泛型方法有标识符列表 <E,T>,且只有标识列表中有的标识符,返回值和参数中才能用
      
              return list2.get(new Random().nextInt(list2.size()));
          
          public <E> E getProduct03(ArrayList<E> list3) //泛型方法有标识符列表 <E,T>
      
              return list3.get(new Random().nextInt(list3.size()));
          
      
      //    静态的泛型方法
          public static <E> E getProduct04(ArrayList<E> list4) //泛型方法有标识符列表 <E,T>,
      
              return list4.get(new Random().nextInt(list4.size()));
          
      
      //    可变参数的泛型方法
          public <E> void get(E... e)
              for (E v:e)
                  System.out.println(v);
              
          
      

java泛型

概述​泛型可以把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型。​相当于把数据类型作为参数来进行传递。​注意:泛型只能是引用数据类型。使用泛型类&泛型接口​泛型类和泛型接口的用都相... 查看详情

java集合框架--泛型方法&泛型集合&泛型优点(代码片段)

1.泛型方法MyGenericMethod.javapackagegeneric;publicclassMyGenericMethod/***MethodName:show*Description:泛型方法,用于展示任意类型的数据**@returnvoid*@date2021/8/920:34*@params:[t]*@authorTianjiao*/public 查看详情

java泛型:泛型类泛型接口和泛型方法

原文出自:https://segmentfault.com/a/1190000002646193泛型类publicclassContainer<K,V>{privateKkey;privateVvalue;publicContainer(Kk,Vv){key=k;value=v;}publicKgetKey(){returnkey;}publicvoidsetKey(Kkey){thi 查看详情

java泛型的其他应用——泛型接口泛型方法泛型数组以及泛型的嵌套设置

学习目标掌握泛型接口的使用掌握泛型方法的定义的及使用掌握泛型数组的使用掌握泛型的嵌套设置之前所有的操作都是在类中直接使用泛型操作的,那么,对于Java来说,也可以直接在接口中定义及使用泛型。定义泛型接口在JD... 查看详情

java泛型:泛型类泛型接口和泛型方法

根据《Java编程思想(第4版)》中的描述,泛型出现的动机在于:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。泛型类容器类应该算得上最具重用性的类库之一。先来看一个没有泛型的情况下... 查看详情

泛型与枚举

1:集合当中使用泛型:【1】统一集合当中的数据类型,更方便的操作数据。【2】参数化的类型【3】规定要操作的数据类型2:泛型类||泛型方法||泛型接口【1】泛型表示:大写字母【2】默认为object;自定义TEVK[!]:泛型方法与泛... 查看详情

为啥接口的泛型方法可以在 Java 中实现为非泛型?

】为啥接口的泛型方法可以在Java中实现为非泛型?【英文标题】:Whyagenericmethodofaninterfacecanbeimplementedasnon-genericinJava?为什么接口的泛型方法可以在Java中实现为非泛型?【发布时间】:2016-08-1002:49:11【问题描述】:假设我们有几... 查看详情

java泛型示例-泛型方法,类,接口

...版本,那么我确定您已经使用过它。Java中具有集合类的泛型非常容易,但是它提供了比仅创建集合类型更多的功能。我们将在本文中尝试学习泛型的功能。如果我们使用专业术语,对泛型的理解有时会变得混乱,因此,我将尽... 查看详情

Java 泛型接口与泛型方法,以及何时使用其中一种

】Java泛型接口与泛型方法,以及何时使用其中一种【英文标题】:JavaGenericInterfacevsGenericMethods,andwhentouseone【发布时间】:2015-08-1500:38:41【问题描述】:我想知道,除了句法差异之外,什么时候可以在接受泛型参数的方法上使用... 查看详情

java泛型知识点:泛型类泛型接口和泛型方法

有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。泛型类容器类应该算得上最具重用性的类库之一。先来看一个没有泛型的情况下的容器类如何定义:publicclassContainer{privateStringkey;privateStringvalue;pub... 查看详情

java泛型_泛型类接口通配符方法上下边界(代码片段)

文章目录①.泛型的概述②.泛型-类class③.泛型-接口④.泛型-通配符?⑤.泛型-方法⑥.泛型上下边界①.泛型的概述①.泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类... 查看详情

具有接口类型约束的 C# 泛型方法

】具有接口类型约束的C#泛型方法【英文标题】:C#genericmethodwithinterfacetypeconstraint【发布时间】:2013-01-2909:59:12【问题描述】:假设我有:通用方法Get&lt;T&gt;几个接口IEntity,IValue分别实现这些接口的几个类,例如:Entity->I... 查看详情

Java 泛型接口转换

】Java泛型接口转换【英文标题】:JavaGenericsInterfacecasting【发布时间】:2014-05-0303:25:01【问题描述】:我偶然发现了一个涉及我不理解的泛型和接口的Java转换情况。请考虑以下我创建List&lt;Interface1&gt;的代码。然后get()一个... 查看详情

java——泛型(代码片段)

文章目录Java中泛型的概述Java中泛型的语法规则泛型集合泛型方法泛型方法示例(代码演示)小结泛型类泛型类示例(代码演示)小结泛型接口泛型接口示例(代码演示)高级泛型总结Java中泛型的概述泛型... 查看详情

java进阶之泛型

泛型的优点泛型类型可以提高可靠性和可读性泛型可以参数化类型泛型可以让我们在编译时而不是在运行时检测出错误泛型类或方法允许用户指定可以和这些类或方法一起工作的对象类型(相容的对象)泛型类ArrayList、泛型接口... 查看详情

java泛型

1/**2*泛型定义3*泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。Java语言引入泛型的好... 查看详情

java学习----泛型

目录  1.泛型的定义  2.泛型的使用  3.泛型通配符 一、泛型的定义  泛型是java5的新特性,使用泛型会让程序编写简单安全,在编译的时候就会检查类型是否安全  定义:所谓泛型就是允许在定义类、接口和方... 查看详情

java泛型

Java中的泛型,通常使用<E>来表示。泛型是指参数化类型。例如:  List<String>li=newArrayList<String>() 泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类... 查看详情