java泛型

来源:互联网 发布:外汇交易分析软件 编辑:程序博客网 时间:2024/05/16 10:49

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动隐式的,提高代码的重用率。

  1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
  2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
  3、泛型的类型参数可以有多个。
  4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上称为“有界类型”。
  5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName("java.lang.String");

自定义泛型异常类:

public class MyGeneric<T> {
 public void sum(T a,T b){
  System.out.println(a.toString()+b.toString());
 }
 
 public static void main(String[] args) {
  MyGeneric<Integer> m=new MyGeneric<Integer>();
  m.sum(4, 4);
  
  MyGeneric<String> m1=new MyGeneric<String>();
  m1.sum("lo","ve");
 }
}

 

自定义泛型方法:

public class MyMethod {
 public static <T> void print(T [] t){
  for (int i = 0; i < t.length; i++) {
   System.out.println(t[i]);
  }
 }
 public static void main(String[] args) {
  print(new String[]{"lo","ve"});
  
  print(new Integer[]{1,2});
  
 }
}

上限通配符:

import java.util.Hashtable;


/**
 * 上限通配符使用
 * @author ruanj_000
 *
 * @param <K>
 * @param <V>
 */
public class MyGenericExtends<K extends Number,V> {  //限制key键只能为数字
 public Hashtable<K, V> ht=new Hashtable<K, V>();
 public void put(K k,V v){
  ht.put(k, v);
 }
 public V get(K k){
  return ht.get(k);
 }
 
 public static void main(String[] args) {
  MyGenericExtends<Number, String> ME=new MyGenericExtends<Number, String>();
  ME.put(1, "love");   //key键只能为数字 包括整形、浮点型 .....
  ME.put(3.5,"sd");
  System.out.println(ME.get(1));
  System.out.println(ME.get(3.5));
 }
}

 

 

 

0 0
原创粉丝点击