泛型方法

一、泛型方法  方法使用泛型之前必须对泛型进行声明,语法<T>,T可以是任意字母,但通常必须大写。  泛型的声明<T>要放在方法的返回值之前,如 public static <T> void doXX(T t)

二、如果在类的声明上声明了泛型,那么类中的实例方法声明中可以声明泛型也可以直接使用类声明的泛型,但是类中的静态方法必须要声泛  型。  例如:  
  public class Demo <T>{
      public void m1(T t){......}
      public T void m2(T t){......}
      public static <T> void m3(T t){.....}
  }
  对于上面的m1和m2来说,类型T是依赖于类的对象的,因此必须要创建类的实例才可以调用m1和m2
三、只有引用类型才可以作为泛型方法的实参  java.util.Arrays类中的asList方法定义如下:    public static <T> List<T> asList(T... a)    参数是一个可变参数,注意一个原则,那就是:只有引用类型才可以作为泛型方法的实参    那么,请看下面的例子:    如果参数是一个基本类型的数组,那么该方法会将整个数组来转化为list中的一个元素    如:
      int[] i1 = {1,2,3};
      list = Arrays.asList(i1);
      Syso(list); 
    上面输出的结果是i1的内存地址.
   如果将上面的数组类型由int改为Integer,则会将数组中的每一个数转为list中的一个一个元素.
 
时间: 2024-10-25 13:09:14

泛型方法的相关文章

泛型程序设计---泛型方法的定义

昨天,学习了泛型类的定义,今天趁热打铁,学习下泛型方法的定义: 定义泛型方法的语法格式如下: 方法修饰符 类型变量(类型变量需要使用一对尖括号<>括起来) 返回值 方法名(方法参数),例如:public <T> T getMiddle(T...a); 以下是程序示例: class ArrayAlg { public static <T> T getMiddle(T...a) { return a[a.length/2]; } } 今天复习下昨天的泛型类定义.加上泛型方法

Java泛型类泛型方法

使用泛型,在某些情况下可以有效减少代码量. Pair泛型类可以根据传入的参数类型进行相应的构造. minmax是泛型方法,不同数据类型的数组,也可以得到他们的min max值,需要注意的是传进去的T[]类类型必须是实现了Comparable方法的,否则无法调用compareTo()方法. 另外,泛型的类型必须是类类型,int, double, float这种是不行的,必须是Integer, Double, Float, String, StudentClass这种类类型的. /** 泛型类 *

java 16 -7 泛型方法和泛型接口(泛型类相似)

写一个ObjectTool类 泛型方法:把泛型定义在方法上 格式 public <泛型类型> 返回类型 方法名(泛型类型) 这样的好处是: 这个泛型方法可以接收任意类型的数据 1 public class ObjectTool { 2 public <T> void show(T t) { 3 System.out.println(t); 4 } 5 } 再写一个测试类 1 public class ObjectToolDemo { 2 public static void mai

【Java基础】一个有意思的泛型方法Arrays.asList(T... a)

总结 利用Arrays.asList方法返回的List是不允许add和remove的,这种list的长度不可变,因为底层依然是写数组. Arrays.asList的返回值是调用是传入T类型的List,所以传入啥,返回啥的列表 T... a 底层本来就是转换为T[] x的数组,所以如果传入的T是数组,最后的底层参数是二维数组T[][] y. Arrays.asList(T... a)方法的作用 将数组转为集合的方法,返回的是List集合.和Collection的toArray对应,是数组和集合间相

java 泛型详解(普通泛型、 通配符、 泛型接口,泛型数组,泛型方法,泛型嵌套)

JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能-----Java的泛型. 1.Java泛型  其实Java的泛型就是创建一个用类型作为参数的类.就象我们写类的方法一样,方法是这样的method(String str1,String str2 ),方法中参数str1.str2的值是可变的.而泛型也是一样的,这样写class Java_Generics<K,V>,这里边的K和V就象方法中的参数str1和st

asp mvc 导出txt 文件泛型方法

asp mvc 导出txt 文件泛型方法分享: public static void ExportFile<T>(T obj) { StringBuilder str = new StringBuilder(); //列出obj 对象中的所有属性 System.Reflection.PropertyInfo[] properties = obj.GetType().GetProperties(); if (properties != null && properties.Len

Java泛型:泛型类、泛型接口和泛型方法

原文出自:https://segmentfault.com/a/1190000002646193 泛型类 public class Container<K, V> { private K key; private V value; public Container(K k, V v) { key = k; value = v; } public K getKey() { return key; } public void setKey(K key) { this.key = key; } pu

Java泛型学习笔记 - (三)泛型方法

泛型方法其实和泛型类差不多, 就是把泛型定义在方法上, 格式大概就是: public <类型参数> 返回类型 方法名(泛型类型 变量名) {...}泛型方法又分为动态方法和静态方法,:1. 动态泛型方法其实在前一篇博文中我已经用到了, 1 public class Box<T> { 2 3 private T obj; 4 5 public Box() {} 6 7 public T getObj() { 8 return obj; 9 } 10 11 public void se

泛型类定义和泛型方法以及泛型限定

1.泛型类定义的泛型,在整个类中有效.如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了. 2.为了让不同方法可以操作不同类型,而且类型还不确定.那么可以将泛型定义在方法上. 3.特殊之处: 静态方法不可以访问类上定义的泛型. 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上. package tan; //定义泛型类(要操作的类型不确定) class Demo<T>{ public void show(T t){ System.out.print